如何解析JSON

  JSON数据现在是我们开发中用的最多的,百分之九十的数据都是通过JSON方式进行传输,那么想要学好JSON解析就要了解什么是JSON数据,怎么快速解析它从而提升开发效率。下面我们先来说说JSON的数据格式

  • 1 []中括号代表的是一个数组;
  • 2 {}大括号代表的是一个对象
  • 3 双引号“”表示的是属性值
  • 4 冒号:代表的是前后之间的关系,冒号前面是属性的名称,后面是属性的值,这个值可以是基本数据类型,也可以是引用数据类型。
  • 对象与对象之间可以嵌套
类库的选择:

Java中并没有内置JSON的解析,因此使用JSON需要借助第三方类库。

下面是几个常用的 JSON 解析类库:

  • Gson: 谷歌开发的 JSON 库,功能十分全面,而且稳定
  • FastJson: 阿里巴巴开发的 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:功能更加全面,效率高

 

posted @ 2021-03-10 17:14  kunmin  阅读(235)  评论(0编辑  收藏  举报