java中对json数据的处理可以分为以下两种

  • 将Java中的对象快速的转换为JSON格式的字符串.
  • 将JSON格式的字符串, 转换为Java的对象.

而本文介绍的解析方式是Gson和FastJson,而Gson和FastJson都需要引入jar包,下载链接如下

而对于如何引入jar文件,可以参考我另一篇文章:IDEA引入jar文件

首先就是Gson,Gson是谷歌针对于Json数据处理而诞生的一种解析方式,而FastJson则属于阿里。

1.Gson

(1) 将Java中的对象转换为JSON格式的字符串

使用Gson处理json数据很简单,只需要使用toJson方法就可以将对象转换成json格式的字符串,首先我们创建一个Book对象,其属性包含以下几个,然后生成相应的set/get/tostring方法和构造方法

private int id;          //id
private String name;     //图书名
private String author;   //作者
private String info;     //简介
private double price;    //价格

然后创建一个Book对象,使用toJson方法

Book book = new Book(1,"新年快乐","张三","嘿嘿哈哈",18.8); //创建图书对象
String s = new Gson().toJson(book); //使用Gson的toJson方法将Book对象转换为Json字符串
System.out.println(s);  //打印图书对象,以toString方法进行输出

打印结果如下,即为json格式字符串

{"id":1,"name":"新年快乐","author":"张三","info":"嘿嘿哈哈","price":18.8}

(2) 将JSON格式的字符串转换为Java中的对象

只需要使用fromJson方法就可以很轻松的将json字符串转换为对象,这里以上方的json字符串为例转换成Book对象

Book book = new Gson().fromJson("{\"id\":1,\"name\":\"新年快乐\",\"author\":\"张三\",\"info\":\"嘿嘿哈哈\",\"price\":18.8}", Book.class); //将json字符串转换为Book对象
System.out.println(book);

输出结果为

Book{id=1, name='新年快乐', author='张三', info='嘿嘿哈哈', price=18.8}

当然,在没有要转换的对象的时候,也可以将json字符串转换为java中的字典

(3) 将JSON格式的字符串转换为Java中的集合

json字符串是以键值对形式存储的,因此将其转换为Map

Map<String,String > map= new Gson().fromJson("{\"id\":1,\"name\":\"新年快乐\",\"author\":\"张三\",\"info\":\"嘿嘿哈哈\",\"price\":18.8}", HashMap.class);
System.out.println(map);

打印结果为

{author=张三, price=18.8, name=新年快乐, id=1.0, info=嘿嘿哈哈}

2.FastJson

(1) 将Java中的对象转换为JSON格式的字符串

使用FastJson解析json数据也很简单,将对象转换成json字符串只需要使用JSON.toJSONString()即可,其输出结果与Gson相同

String s = JSON.toJSONString(book); //将Book对象转换成json字符串
System.out.println(s);

Gson将JSON格式的字符串转换为Java中的对象和集合都使用fromJson()

而FastJson将JSON格式的字符串转换为Java中的对象使用parseObject(),转换为List集合使用parseArray()

(2) 将JSON格式的字符串转换为Java中的对象

Book book = JSON.parseObject("{\"author\":\"张三\",\"id\":1,\"info\":\"嘿嘿哈哈\",\"name\":\"新年快乐\",\"price\":18.8}", Book.class); 
System.out.println(book1);

(3) 将JSON格式的字符串转换为Java中的List集合

这里以[“床前明月光”,“疑是地上霜”,“举头望明月”,“低头思故乡”]为例

String list = "[\"床前明月光\",\"疑是地上霜\",\"举头望明月\",\"低头思故乡\"]";
List<String> ls= JSON.parseArray(list, String.class); //将list字符串转换成List集合
System.out.println(ls);

打印输出

[床前明月光, 疑是地上霜, 举头望明月, 低头思故乡]