如何解析JSON
JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么想要学好JSON解析就要了解什么是JSON数据,怎么快速解析它从而提升开发效率。下面我们先来说说JSON的数据格式
- 1 []中括号代表的是一个数组;
- 2 {}大括号代表的是一个对象
- 3 双引号“”表示的是属性值
- 4 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。
- 对象与对象之间可以嵌套
类库的选择:
Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。
下面是几个常用的 JSON 解析类库:
下面我们先导入所需要的包(注意不要使用fastjson的1.2.69版本,其中存在隐患)
1、1 Gson将对象转换为JSON数据
下面我们,创建一个对象,先将这个对象转为JSON数据(淡蓝色部分是关键代码)
1 1 //省略set,get方法 2 2 public class People { 3 3 4 4 //姓名 5 5 private String name; 6 6 //年龄 7 7 private int age; 8 8 //是否结婚 9 9 private boolean isLoving; 10 10 //测试的数组类型 11 11 private List<Integer> nums; 12 12 13 13 } 14 15 //创建测试对象 16 People people = new People("tom",18,false); 17 List<Integer> nums = new ArrayList<>(); 18 nums.add(10); 19 nums.add(20); 20 nums.add(30); 21 nums.add(40); 22 people.setNums(nums); 23 Gson gson = new Gson(); 24 String s = gson.toJson(people); 25 System.out.println(s);
运行结果:{"name":"tom","age":18,"isLoving":false,"nums":[10,20,30,40]}
1、2使用Gson将上面的字符串转换为JSON数据
fromJson(json数据,转换为对应的对象)
1 //上次实化对象的字符串 2 String text = "{\"name\":\"tom\",\"age\":18,\"isLoving\":false,\"nums\":[10,20,30,40]}"; 3 Gson gson = new Gson(); 4 //fromJson:第一个参数是字符串数据,第二个是解析为对应的对象 5 People people = gson.fromJson("text", People.class); 6 System.out.println(people.toString());
输出结果:People{name='tom', age=18, isLoving=false, nums=[10, 20, 30, 40]}
2、1下面我们使用fastJson将对象转换JSON数据
注意:toJSONString()是一个静态方法,所以可以直接使用类名.方法
1 People people = new People("tom",18,false); 2 List<Integer> nums = new ArrayList<>(); 3 nums.add(10); 4 nums.add(20); 5 nums.add(30); 6 nums.add(40); 7 people.setNums(nums);
//将人对象转换为JSON字符串 8 String str = (String) JSON.toJSONString(people); 9 System.out.println(str);
输出结果:{"age":18,"loving":false,"name":"tom","nums":[10,20,30,40]}
2、2将一个JSON字符串转换为对象
1 String text = "{\"name\":\"tom\",\"age\":18,\"isLoving\":false,\"nums\":[10,20,30,40]}"; 2 People people = (People) JSON.parseObject(text,People.class); 3 System.out.println(people.toString);
输出结果:People{name='tom', age=18, isLoving=false, nums=[10, 20, 30, 40]}
总结:
对象转为JSON字符串:Gson:使用new Gson.toJson(object),返回String
fastjson:使用Json.toJSONString(object),返回一个String
JSON字符串转为对象:Gson:使用new Gson.fromJson(json字符串,所转换类型),返回一个JsonObject
FastJson:Json.parseparseObject(json字符串,所转换类型),返回一个JsonObject
Gson:稳定性更好,安全性强
fastjson:功能更加全面,效率高