文章目录
一、JSON?
- json是一种轻量级的数据交换格式。
- json和js对象的关系:json是js对象的字符串表示法(json本质上就是一个字符串)。
json和js对象的互相转换
// json字符串解析成json对象:{name:"zs",age:12}
var obj = JSON.parse('{"name":"zs","age":"12"}')
// json对象转换成json字符串:'{"name":"zs","age":"12"}'
var json = JSON.Stringify({name:"zs",age:12}) // 对象的键名也可以使用引号包裹
二、JSON操作工具
将Java对象转换为JSON格式,也可以将JSON字符串转换为Java对象。
- fastjson
- jackson
- hutool-json
hutool-json工具的方法:
1.创建一个键值对象{“key”:“value”}
JSONObject obj = JSONUtil.createObj();
obj.set("list", "[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":19}]");
System.out.println("键值对象:" + obj);
System.out.println("通过list键获取值list对象:" + obj.get("list"));
打印:
键值对象:{"list":"[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":19}]"}
通过list键获取值list对象:[{"name":"zhangsan","age":18},{"name":"lisi","age":19}]
2.把list对象转换成JSONArray数组
JSONArray arrays = JSONUtil.parseArray(obj.get("list"));
System.out.println("list集合解析成JSONArray数组:" + arrays);
打印:
list集合解析成JSONArray数组:[{"name":"zhangsan","age":18},{"name":"lisi","age":19}]
3.把JSONArray数组转换成对应实体的list集合
List<Person> list = JSONUtil.toList(arrays, Person.class);
System.out.println("解析成对应实体类的list集合:" + list);
打印:
解析成对应实体类的list集合:[Person{name='zhangsan', age=18}, Person{name='lisi', age=19}]
4.json字符串直接转换成对应实体的list集合
String jsonStr = "[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":19}]";
System.out.println("前端传输的json字符串数组对象:" + jsonStr);
List<Person> people = JSONUtil.toList(jsonStr, Person.class);
System.out.println("解析成对应实体类的list集合:"+people);
打印:
前端传输的json字符串数组对象:[{"name":"zhangsan","age":18},{"name":"lisi","age":19}]
解析成对应实体类的list集合:[Person{name='zhangsan', age=18}, Person{name='lisi', age=19}]
5.格式化展示json对象
String jsonStr = "[{\"name\":\"zhangsan\",\"age\":18},{\"name\":\"lisi\",\"age\":19}]";
String jsonPrettyStr = JSONUtil.toJsonPrettyStr(jsonStr);
System.out.println(jsonPrettyStr);
打印:
[
{
"name": "zhangsan",
"age": 18
},
{
"name": "lisi",
"age": 19
}
]