JSON解析详解不看后悔系列

    科技2022-08-19  100

    JSON解析详解 不看后悔系列

    Gson将对象转换为 JSON 字符串将 JSON 字符串转换为对象Gson转换Json格式中值为数组的情况 FastJson将对象转换为 JSON 字符串将 JSON 字符串转换为对象FastJson解析数组

    简介:

    JSON: JavaScript Object Notation JS对象简谱 , 是一种轻量级的数据交换格式.

    对象格式

    java: class Book{ private String name; private String info; get/set... } Book b = new Book(); b.setName(“金苹果”); b.setInfo(“种苹果”); js: var b = new Object(); b.name = "金苹果"; b.info = "种苹果"; XML: <book> <name>金苹果</name> <info>种苹果</info> </book> JSON: { "name":"金苹果", "info":"种苹果" } 一个对象, 由一个大括号表示.括号中描述对象的属性 通过键值对来描述对象的属性 (可以理解为, 大括号中, 包含的是一个个的键值对.) 格式: 1. 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔. 2. 键值对的键 应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析) 3. 键值对的值,可以是 JS 中任意类型的数

    数组格式:

    在JSON格式中可以与对象互相嵌套 [元素1,元素2...]

    Gson

    首先创建一个Book类用于转换,分别有name,id,info三个属性

    package com.java; import java.util.Objects; public class Book { String name; String id; String info; public Book() { } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", id='" + id + '\'' + ", info='" + info + '\'' + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Book book = (Book) o; return Objects.equals(name, book.name) && Objects.equals(id, book.id) && Objects.equals(info, book.info); } @Override public int hashCode() { return Objects.hash(name, id, info); } public Book(String name, String id, String info) { this.name = name; this.id = id; this.info = info; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } }

    将对象转换为 JSON 字符串

    转换JSON字符串的步骤: 1. 引入JAR包 2. 在需要转换JSON字符串的位置编写如下代码即可: String json = new Gson().toJSON(要转换的对象);

    案例:

    package com.java; import com.google.gson.Gson; import java.util.Objects; public class Demo05 { /** * gson格式转换 将对象转换为Json格式 * @param args */ public static void main(String[] args) { //1. 创建需要转换的对象 Book b = new Book("白夜行","10001","悬疑类小说"); //2. 创建 Gson 对象 Gson gson = new Gson(); //3. 将对象转换为Json String json = gson.toJson(b); System.out.println(json); } } /* {"name":"白夜行","id":"10001","info":"悬疑类小说"} */

    将 JSON 字符串转换为对象

    引入JAR包在需要转换Java对象的位置, 编写如下代码: 对象 = new Gson().fromJson(JSON字符串,对象类型.class);

    案例:

    package com.java; import com.google.gson.Gson; import java.util.HashMap; public class Demo06 { /** * Gson Json格式转换为对象 * @param args */ public static void main(String[] args) { //1. 创建Gson对象 Gson gson = new Gson(); //2. 创建Json字符串 String json = "{\"name\":\"白夜行\",\"id\":\"10001\",\"info\":\"悬疑类小说\"}"; //3. 将Json转换为对象 Book b = gson.fromJson(json, Book.class); System.out.println(b.getName()); //当不存在对应Book对象时,可以转换为Map对象(键值对方式) HashMap data = gson.fromJson(json, HashMap.class); System.out.println(data.get("info")); } } /* 白夜行 悬疑类小说 */

    Gson转换Json格式中值为数组的情况

    package com.java; import com.google.gson.Gson; import java.util.HashMap; import java.util.List; public class Demo07 { /** * Gson Json格式转换为对象 * @param args */ public static void main(String[] args) { //1. 创建Gson对象 Gson gson = new Gson(); //2. 创建Json字符串 String json = "{\"name\":\"白夜行\",\"page\":[\"锄禾日当午\",\"汗滴禾下土\",\"粒粒皆辛苦\",\"谁知盘中餐\"],\"info\":\"悬疑类小说\"}"; //3. 将Json转换为对象 Book b = gson.fromJson(json, Book.class); //当不存在对应Book对象时,可以转换为Map对象(键值对方式) HashMap data = gson.fromJson(json, HashMap.class); System.out.println(data.get("page").getClass()); //返回 class java.util.ArrayList List list = (List)data.get("page"); System.out.println(list.get(1)); } } /* class java.util.ArrayList 汗滴禾下土 */

    FastJson

    将对象转换为 JSON 字符串

    转换JSON字符串的步骤: 1. 引入JAR包 2. 在需要转换JSON字符串的位置编写如下代码即可: String json=JSON.toJSONString(要转换的对象);

    案例:

    package com.java; import com.alibaba.fastjson.JSON; public class Demo08 { /** * FastJson 对象转换为 Json格式 * @param args */ public static void main(String[] args) { //1. 创建需要转换的对象 Book b = new Book("白夜行","10001","悬疑类小说"); //2. 创建返回的 Json 字符串 String json = JSON.toJSONString(b); System.out.println(json); } } /* {"id":"10001","info":"悬疑类小说","name":"白夜行"} */

    将 JSON 字符串转换为对象

    引入JAR包在需要转换Java对象的位置, 编写如下代码: 类型 对象名=JSON.parseObject(JSON字符串, 类型.class); List<类型> list=JSON.parseArray(JSON字符串,类型.class);

    案例:

    package com.java; import com.alibaba.fastjson.JSON; public class Demo09 { /** * 使用FastJson 将Json格式转换为对象 * @param args */ public static void main(String[] args) { //1. 创建 Json 字符串 String json = "{\"id\":\"10001\",\"info\":\"悬疑类小说\",\"name\":\"白夜行\"}"; //2. 调用 Json parseObject方法 转换为对象 Book b = JSON.parseObject(json,Book.class); System.out.println(b.getName()); } } /* 白夜行 */

    FastJson解析数组

    package com.java; import com.alibaba.fastjson.JSON; import java.util.List; public class Demo10 { /** * FastJson解析数组 * @param args */ public static void main(String[] args) { String json = "[\"锄禾日当午\",\"汗滴禾下土\",\"粒粒皆辛苦\",\"谁知盘中餐\"]"; List<String> strings = JSON.parseArray(json,String.class); System.out.println(strings.get(2)); } } /* 粒粒皆辛苦 */
    Processed: 0.014, SQL: 9