目录

说明

String 转数组

string 转jsonObject

string 转map

string 转实体

string 转list

常见错误


说明

常用的json工具类有alibaba.fastjson、net.sf.json,两个工具的使用方法不同。本文使用alibaba.fastjson工具类经行数据处理,引入com.alibaba.fastjson.JSON、com.alibaba.fastjson.JSONArray、com.alibaba.fastjson.JSONObject三个类。被转换的字符串必须严格符合json规则!

String 转数组

String arrayStr = "[" +
                "    {\n" +
                "      \"name\": \"jsonBaby\",\n" +
                "      \"age\": 5,\n" +
                "      \"timestamp\": 1585100309642\n" +
                "    }\n" +
            "  ]";
JSONArray data = JSON.parseArray(arrayStr);
System.out.println(data);

输出:[{"name":"jsonBaby","age":5,"timestamp":1585100309642}]

string 转jsonObject

String objectStr =
        "    {\n" +
        "      \"name\": \"jsonBaby\",\n" +
        "      \"age\": 5,\n" +
        "    }\n";
JSONObject object = JSON.parseObject(objectStr);
System.out.println("我是"+object.get("name")+",我"+object.get("age")+"岁了");

输出:我是jsonBaby,我5岁了

string 转map

String objectStr =
        "    {\n" +
                "      \"name\": \"jsonBaby\",\n" +
                "      \"age\": 5,\n" +
                "    }\n";
Map maps = (Map)JSON.parse(objectStr);
System.out.println("我是"+maps.get("name")+",我"+maps.get("age")+"岁了");

输出:我是jsonBaby,我5岁了

string 转实体类

新增实体

public class Student implements Serializable{
    private static final long serialVersionUID = -919201640201914789L;
    public String age;
    public String name;
    public Student(String age, String name) {
        this.age = age;
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}
String objectStr =
        "    {\n" +
                "      \"name\": \"jsonBaby\",\n" +
                "      \"age\": 5,\n" +
                "    }\n";
//4.string 转实体
Student student = JSONObject.parseObject(objectStr,Student.class);
System.out.println("我是"+student.name+",我"+student.age+"岁了");

输出:我是jsonBaby,我5岁了

string 转list

String arrayStr = "[" +
        "    {\n" +
        "      \"name\": \"jsonBaby\",\n" +
        "      \"age\": 5,\n" +
        "      \"timestamp\": 1585100309642\n" +
        "    }\n" +
        "  ]";

List<Student> list = JSONArray.parseArray(arrayStr,Student.class);
for(Student stud : list){
    System.out.println("我是"+stud.name+",我"+stud.age+"岁了");
}

输出:我是jsonBaby,我5岁了

常见错误

com.alibaba.fastjson.JSONException: expect ':' at 0, name name

这个错误是较常见的错误,因为json格式错误导致,冒号被转成了等于号。如果遇到了可以把源数据打印出来看一下是不是符合json规则。从接口返回的数据可以使用JSON.toJSON()方法先将字符串转换为json标准的数据。


 

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐