1.什么是JSON?
JSON:JavaScript 对象表示法(JavaScript Object Notation)
JSON 是存储和交换文本信息的语法,类似 XML。
如何使用:
-
1、选择"src",选择"New",选择"Other"
-
2、搜索"test",选择"JUnit Test Case"
-
3、设置包名和类名,然后确认,会弹出确认提醒添加JUnit的类库,直接"Add"
- 注意点:
-
1、每个单元测试都需要加注解@Test
-
3、不能有父类,不能是静态方法,没有参数,返回值是void2、执行成功会显示绿色,失败显示暗红色
- 如何执行:
-
1、执行所有用例,在类中空白地方右键,选择"Run As"或"Debug As",选择"JUnit Test"
-
2、执行某个方法,点击方法名,右键,选择"Run As"或"Debug As",选择"JUnit Test"
2.JSON类型
1)基本类型
{
"name": "张三",
"age": 18,
"sex": true
}
2)数组类型
[
{
"name": "张三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
3)对象嵌套
{
"name": "teacher",
"computer": {
"CPU": "intel7",
"disk": "512G"
},
"students": [
{
"name": "张三",
"age": 18,
"sex": true
},
{
"name": "李四",
"age": 19,
"sex": false
}
]
}
二、解析方式
1.使用 gson处理
1)转为JSON字符串
-
单元测试
- 如何使用
- 选择“src”,选择“New”,选择“Other”
- 搜索“test”,选择“JUnit Test Case”
- 设置包名和类名,然后确认,会弹出提醒添加Junit的类库,直接“Add”
- 注意点
- 每个单元测试都需要加注解@Test
- 执行成功会显示绿色,失败显示暗红色
- 不能有父类,不能是静态方法,没有参数,返回值为void
- 如何执行
- 执行所有用例,在空白地方右键,选择”Run As”或者“Debug As”,选择“ Junit Test”
- 执行某个方法,点击方法名,右键,选择”Run As”或者“ Debug As”,选择“ Junit Test”
- 如何使用
-
获得需要的对象
Student stu = new Student(); stu.setName("张三"); stu.setAge(18)
-
格式化为字符串
Gson gson = new Gson(); //将 对象 转化成 json 字符串 String json = gson.toJson(stu)
2)解析成java对象
-
Gson的节点对象
- JsonElement
- JsonPrimitive
- JsonNull
- JsonObject
- JsonArray
-
JsonElement的取值
- JsonPrimitive
- JsonObject
- JsonArray
-
解析对象
- json解析成java对象
// 得到Gson对象 Gson gson = new Gson(); // user对象的字符串 String json1 = "{\"userId\":1,\"uname\":\"admin\",\"upwd\":\"123456\",\"remark\":\"超级管理员\"}"; User user = gson.fromJson(json1, User.class); System.out.println(user.getUname());
- json解析成list
// list String json2 = "[\"aa\",\"bb\",\"cc\"]"; List<String> list = gson.fromJson(json2, new TypeToken<List<String>>(){}.getType()); System.out.println(list.get(0));
- json解析成map
// map String json4 = "{\"key1\":\"hello\",\"key2\":1,\"userList\":[{\"userId\":1,\"uname\":\"admin\",\"upwd\":\"123456\",\"remark\":\"超级管理员\"},{\"userId\":2,\"uname\":\"zhangsan\",\"upwd\":\"123456\",\"remark\":\"66666\"},{\"userId\":3,\"uname\":\"lisi\",\"upwd\":\"111111\",\"remark\":\"asdfgh\"}],\"user\":{\"userId\":1,\"uname\":\"admin\",\"upwd\":\"123456\",\"remark\":\"超级管理员\"}}"; Map<String, Object> map = gson.fromJson(json4, new TypeToken<Map<String, Object>>(){}.getType()); System.out.println(map);
- json节点解析
-
步骤
- 获得解析器
// 获取解析器 JsonParser parser = new JsonParser();
- 获得根节点元素,将json字符串转换成节点对象
// 获取根节点,将josn字符串转换成节点对象 JsonElement element = parser.parse(json);
- 根据字符串将根节点对象转换成指定数据结构的节点对象
// 根据字符串将根节点对象转换成指定数据数据结构的节点对象 JsonObject object = element.getAsJsonObject();
- 获取指定节点的值,分析不同节点的类型
// 获取指定节点的值 分析不同节点的类型 // flag 布尔类型 基本数据类型节点 JsonPrimitive primitive = object.getAsJsonPrimitive("flag"); // 将基本类型的节点对象转换成指定数据类型的 boolean flag = primitive.getAsBoolean(); System.out.println(flag); // data 对象类型 对象节点 JsonObject obj = object.getAsJsonObject("data"); // 将对象节点转换成javaBean对象 User user = new Gson().fromJson(obj, User.class); System.out.println(user.getUname());
-
2.使用fastjson处理
1)转换为json字符串
// 将java对象转换成JSON格式的字符串
String json = JSON.toJSONString(object);
2)解析成对象
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<Map> List<Map> listMap = JSON.parseObject(jsonString, new TypeReference<List<Map>>(){});