JSON

1.什么是JSON?
JSON:JavaScript 对象表示法(JavaScript Object Notation)
JSON 是存储和交换文本信息的语法,类似 XML。
如何使用:

  •  1、选择"src",选择"New",选择"Other"
    
  •  2、搜索"test",选择"JUnit Test Case"
    
  •  3、设置包名和类名,然后确认,会弹出确认提醒添加JUnit的类库,直接"Add"
    
  • 注意点:
  •  1、每个单元测试都需要加注解@Test
    
  •  2、执行成功会显示绿色,失败显示暗红色
    
    3、不能有父类,不能是静态方法,没有参数,返回值是void
  • 如何执行:
  •  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>>(){});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值