JSON的两种格式
第一种:
[[value1, value2, value3, value4], [value1, value2, value3, value4], [value1, value2, value3, value4], [value1, value2, value3, value4]]
按照顺序将每个字段的值存储,不存储字段名。
注意:[]标识每一个对象,需要知道[]中每一个值表示的字段。
后面我们称之为方括号格式。
第二种:
[{column1: value1, column2: value2, column3: value3, column4: value4}, {column1: value1, column2: value2, column3: value3, column4: value4}, {column1: value1, column2: value2, column3: value3, column4: value4}, {column1: value1, column2: value2, column3: value3, column4: value4}]
将字段名与字段值一并存储。
注意:{}标识每一个对象,按照"字段名":字段值的方式存储信息
后面我们称之为花括号格式。
“方括号”格式转化
String jsonString = “[[1,"zhangsan","male",18,"Beijing"],[2,"lisi","female",18,"Shanghai"]]”
jsonString:字段表示从左到右依次为id,name,sex,age,city。
第一种方式:
List<List<Object>> list = JSON.parseObject([jsonString], new TypeReference<List<List<Object>>>() {});
将JSON字符串看成是list嵌套list的格式,即List< List< Object> >,获取到list之后,循环list,依次获取内层List< Object >,通过get(0)获取id,get(1)获取name……。
第二种方式:
List<StudentAttr > list = JSON.parseArray[jsonString], StudentAttr .class);
public static class StudentAttr extends ArrayList{
public StudentAttr () {
super();
}
public StudentAttr (Collection c) {
super(c);
}
public StudentAttr (int initialCapacity) {
super(initialCapacity);
}
public String getId() {
return get(0).toString();
}
}
自定义类StudentAttr 继承自ArrayList,将StudentAttr 当成是List< Object >
进行处理。
可以在StudentAttr 类内部定义方法getId()获取id,如代码所示,也可以不进行封装,直接get(0)获取id。
“花括号”格式转换
String jsonString = “[{"id":1, "name": "zhangsan", "sex": "male", "age": 18, :city": "Beijing"},{"id": 2, "name": "lisi", "sex": "female", "age": 18, "city": "Shanghai"}]”
jsonString:以{字段名:值, 字段名:值,……}的方式表示。
List<Student> studentList = JSONObject.parseArray(jsonString, Student.class);
将JSON直接转化为对应的对象list,可以直接调用对象的set,get方法进行一系列操作。