1.什么是JSON?
- JSON 指的是 JavaScript 对象表示法(
J
avaS
criptO
bjectN
otation) - JSON 是轻量级的文本数据交换格式
- JSON 具有自我描述性,更易理解
2.JSON数据格式
2.1.Json数组格式
Json本身是数组格式,用中括号[]
包裹,数组元素之间用逗号,
隔开,元素的数据类型没有限制。
例如:
- [1,2,3]
- [“张三”,“李四”,“王五”]
- [{“name”:“张三”,“sex”:“男”}]
[
1,
2,
3
]
[
"张三",
"李四",
"王五"
]
[
{
"name":"张三",
"sex":"男"
}
]
2.2.Json字符串格式
Json本身是字符串格式,用中括号{}
包裹,数据采用键值对方式存储,键是字符串格式,值是任意数据的类型,键和值用:
分开,元素与元素之间用,
隔开。
例如:
- {“name”:“张三”,“sex”:“男”}
- { “result”:true }
- {“name”:“张三”,“result”: [{“name”:“李四”,“sex”:“男”}]}
{
"name":"张三",
"sex":"男"
}
{
"result":true
}
{
"name":"张三",
"result":[
{
"name":"李四",
"sex":"男"
}
]
}
3.FastJson介绍
FastJson是阿里巴巴开源JSON解析库,它可以解析JSON字符串,支持将Java Bean 序列化为字符串,也可以从JSON字符串反序列化到Java bean。
3.1.FastJson在开发中的用法
常用数据转换:
public class TestFastJson {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("张三1");
list.add("张三2");
list.add("张三3");
// list集合序列化json字符串
String s = JSON.toJSONString(list);
System.out.println(s); // ["张三1","张三2","张三3"]
Map<String, String> map = new HashMap<>();
map.put("name", "李四");
map.put("age", "20");
map.put("sex", "1");
// map集合转json字符串
String s1 = JSON.toJSONString(map);
System.out.println(s1); // {"sex":"1","name":"李四","age":"20"}
String s3 = "{\"sex\":\"1\",\"name\":\"李四\",\"age\":\"20\"}";
// json字符串反序列化为java对象,需要传递java对象的class对象
String s2 = JSON.parseObject(s3, String.class);
System.out.println(s2); // {"sex":"1","name":"李四","age":"20"}
String s4 = "[\"张三1\",\"张三2\",\"张三3\"]";
// json字符串反序列化回到list集合,需要集合的泛型的class对象
List<String> list1 = JSON.parseArray(s4, String.class);
System.out.println(list1); // [张三1, 张三2, 张三3]
String s5 = "{\"sex\":\"1\",\"name\":\"李四\",\"age\":\"20\"}";
// json字符串反序列化到map集合中,转后的集合必须要有泛型否则是不安全的,在TypeReference中传入map集合,
// 因为TypeReference是被protected修饰,所有不能直接使用,加上{}变成匿名内部类
Map<String, String> map1 = JSON.parseObject(s5, new TypeReference<Map<String, String>>() {
});
System.out.println(map1); // {sex=1, name=李四, age=20}
}
}
如有不同看法,欢迎留言讨论。