JSON解析方法

  • 通常我们可以通过两种方式对JSON进行解析,也可以说是是两种工具:Gson和FastJson。
  • 通过这两种工具我们可以实现:
  • 将Java中的对象 快速的转换为 JSON格式的字符串.
  • 将JSON格式的字符串, 转换为Java的对象.

Gson

  • 将对象转换为JSON字符串
    步骤:
  • 首先引入JAR包
    下载地址:https://github.com/google/gson
  • 在需要转换JSON字符串的位置编写如下代码即可:
    String json = new Gson().toJSON(要转换的对象);
Book book = new Book("三国演义", "讲述了天下三分,三国争霸的故事");
String json = new Gson().toJson(book);
System.out.println(json);
  • 将JSON字符串转换为对象
    步骤:
  • 引入JAR包
  • 在需要转换Java对象的位置, 编写如下代码:
    对象 = new Gson().fromJson(JSON字符串,对象类型.class);
//        1.创建GSON对象
Gson g = new Gson();
//        2.将JSON转换为对象
Book book = g.fromJson("{\"id\":\"三国演义\",\"info\":\"讲述了天下三分,三国争霸的故事\"}", Book.class);
System.out.println(book.getId());
System.out.println(book);
  • 也可以将JSON字符串转换为集合对象
HashMap book = g.fromJson("{\"id\":\"三国演义\",\"info\":\"讲述了天下三分,三国争霸的故事\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"谁知盘中餐\",\"粒粒皆辛苦\"]}", HashMap.class);
System.out.println(book.get("page"));
System.out.println(book.get("page").getClass());
List page = (List) book.get("page");
System.out.println(page.get(1));

FastJson

  • 将对象转换为JSON字符串
    步骤:
  • 首先引入JAR包
    下载地址:https://github.com/alibaba/fastjson
  • 在需要转换JSON字符串的位置编写如下代码即可:
    String json=JSON.toJSONString(要转换的对象);
//        对象转换为JSON
Book book = new Book("西游记", "讲述了东土大唐高僧唐僧去往西方求取真经的故事");
String json = JSON.toJSONString(book);
System.out.println(json);
  • 将JSON字符串转换为对象
    步骤:
  • 引入JAR包
  • 在需要转换Java对象的位置, 编写如下代码:
    类型 对象名=JSON.parseObject(JSON字符串, 类型.class);

    List<类型> list=JSON.parseArray(JSON字符串,类型.class);
// JSON转换为对象{"id":"西游记","info":"讲述了东土大唐高僧唐僧去往西方求取真经的故事"}
Book book = JSON.parseObject("{\"id\":\"西游记\",\"info\":\"讲述了东土大唐高僧唐僧去往西方求取真经的故事\"}", Book.class);
System.out.println(book);
System.out.println(book.getId());
  • 与Gson不同的是,在FastJson在将JSON字符串转换为集合对象时,是通过JSON.parseArray(JSON字符串,类型.class)而不再是JSON.parseObject(JSON字符串, 类型.class)。
//        JSON(数组)转换为对象{"abc","abcd","abcabcd"}
List<String> str = JSON.parseArray("[\"abc\",\"abcd\",\"abcabcd\"]", String.class);
System.out.println(str);
System.out.println(str.get(1));