1.JSON基本
(1)定义
JSON:JavaScript 对象表示法(JavaScript Object Notation)
一种轻量级的数据交换格式, 易于人阅读和编写, 也易于机器解析和生成。
用来描述数据结构,它是基于纯文本的数据格式,广泛应用于服务端与客户端的数据交互。
(2)格式
两种构建结构:
- 对象:“ 名称/ 值” 对的集合
- 数组: 值的有序列表
具体形式:
- Json 以 key-value 的形式存储数据;
- Key 的取值 为 String 类型;
- Value 的取值 为 String,boolean,Number,数组,Object,null;
- Json 串以{开始,以}结尾;
- Json 串中数组是以[开始,以]结尾;
- Json 串中 Object 是以{开始,以}结尾。
(3)举例
-
基本类型
{ "name": " 张三 ", "age": 18, "sex": true }
-
数组类型
[ { "name": " 张三 ", "age": 18, "sex": true }, { "name": " 李四 ", "age": 19, "sex": false } ]
-
对象嵌套
{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": " 张三 ",
"age": 18,
"sex": true
},
{
"name": " 李四 ",
"age": 19,
"sex": false
}
]
}
2.JSON解析
(1)使用 gson 处理
Gson是一个Google提供的一个Java库,可用于将Java对象转换为JSON表示。也可以被用来将 JSON 字符串转换成一个等效的 Java 对象。
1)转为 Json 字符串
- 获得需要的对象:
Student stu = new Student();
stu.setName("张三");
stu.setAge(18);
- 格式化 为字符串:
Gson gson = new Gson();
//将 对象 转化成 json 字符串
String json = gson.toJson(stu);
2)解析成 java 对象
- Json 节点解析
{
"flag": true,
"data": {
"name": " 张三 ",
"age": 18,
"sex":
}
}
解析步骤 :
①获得解析器
JsonParser parser = new JsonParser();
②获得根节点元素
JsonElement element = parser.parse(json);
③根据文档判断根节点属于什么类型的 Gson 节点对象
// 假如文档 显示 根节点 为对象类型
// 获得 根节点 的实际 节点类型
JsonObject root = element.getAsJsonObject();
④取得节点下的某个节点的 value
// 获得 flag 节点的值, flag 节点为基本数据节点
JsonPrimitive flagJson = root.getAsJsonPrimitive(“flag”);
// 基本节点取值
boolean flag = flagJson.getAsBoolean();
// 获得 data 节点的值,data 节点为 Object 数据节点
JsonObject dataJson = root.getAsJsonObject(“data”);
// 将节点上的数据转换为对象
Student stu = new Gson().fromJson(dataJson,Student.class);
(2)使用 fastjson 处理
阿里巴巴 fastJson 是一个 Json 处理工具包,包括“序列化”和“反序列化”两
部分,它 具备如下特征:速度最快,测试表明,fastjson 具有极快的性能,超
越其他的 Java Json parser。包括自称最快的 JackJson;功能强大,完全支持 Java
Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖。
- 转为 json 字符串
String jsonString = JSON.toJSONString(object);
- 解析成对象
1). JavaBean : Person person = JSON.parseObject(jsonString, Person.class);
2). List : List listPerson =JSON.parseArray(jsonString, Person.class);
3). List:List listString = JSON.parseArray(jsonString, String.class);
4). List