GSON 将JSON数组解析为Java数组或集合(List)

教程分享 > WEB技术 > JavaScript (3431) 2024-08-07 11:21:12

前言

值得一提的是JSON只有数组数据类型。Java同时具有 - 数组和列表。

学习使用Google GSON库将包含json数组的JSON反序列化或解析为java 数组或java列表对象。
 

GSON
GSON

1.将JSON数组解析为根对象

$title(user.json)
[
    {
      "name": "Alex",
      "id": 1
    },
    {
      "name": "Brian",
      "id": 2
    },
    {
      "name": "Charles",
      "id": 3
    }
]
$title(user.java)
public class User
{
    private long id;
    private String name;
     
    public long getId() {
        return id;
    }
    public void setId(long id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
 
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + "]";
    }
}

1.1。对象数组

用于将json数组反序列化为root的 Java程序- 对象的Java数组。
String userJson = "[{'name': 'Alex','id': 1}, "
                + "{'name': 'Brian','id':2}, "
                + "{'name': 'Charles','id': 3}]";
         
Gson gson = new Gson();
 
User[] userArray = gson.fromJson(userJson, User[].class); 
 
for(User user : userArray) {
    System.out.println(user);
}
输出:
User [id=1, name=Alex]
User [id=2, name=Brian]
User [id=3, name=Charles]

1.2。对象列表

用于将json数组反序列化为root的 Java程序- 到Java对象列表。
 
import java.lang.reflect.Type;
import java.util.ArrayList;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
 
String userJson = "[{'name': 'Alex','id': 1}, "
                + "{'name': 'Brian','id':2}, "
                + "{'name': 'Charles','id': 3}]";
         
Gson gson = new Gson();
 
Type userListType = new TypeToken<ArrayList<User>>(){}.getType();
 
ArrayList<User> userArray = gson.fromJson(userJson, userListType); 
 
for(User user : userArray) {
    System.out.println(user);
}
输出:
User [id=1, name=Alex]
User [id=2, name=Brian]
User [id=3, name=Charles]

2.将JSON数组解析为成员

如果JSON数组是非根对象,它们会毫无困难地将JSON数组解析为成员。我们可以fromJson()以通常的方式使用该方法,它将正确地将json数组解析为所需的java数组或列表。
$title(department.json)
{
    "id"    : 1,
    "name"  : "HR",
    "users" : [
        {
          "name": "Alex",
          "id": 1
        },
        {
          "name": "Brian",
          "id": 2
        },
        {
          "name": "Charles",
          "id": 3
        }
    ]

2.1。成员数组

将json数组反序列化为成员对象的 Java程序- 作为成员字段的Java对象数组。
$title(Department.java)
public class Department
{
    private long id;
    private String name;
    private User[] users;
 
    //Getters and Setters
 
    @Override
    public String toString() {
        return "Department [id=" + id + ", name=" + name + ", users=" + Arrays.toString(users) + "]";
    }
}
demo
String departmentJson = "{'id' : 1, "
        + "'name': 'HR',"
        + "'users' : ["
            + "{'name': 'Alex','id': 1}, "
            + "{'name': 'Brian','id':2}, "
            + "{'name': 'Charles','id': 3}]}";
 
Gson gson = new Gson();
 
Department department = gson.fromJson(departmentJson, Department.class); 
 
System.out.println(department);
输出:
Department [id=1, name=HR,
    users=[User [id=1, name=Alex],
        User [id=2, name=Brian],
        User [id=3, name=Charles]]]

2.2。会员名单

Java程序将json数组反序列化为成员对象 - 将Java对象列为成员字段。
public class Department
{
    private long id;
    private String name;
    private List<User> users;
 
    //Getters and Setters
 
    @Override
    public String toString() {
        return "Department [id=" + id + ", name=" + name + ", users=" + users + "]";
    }
}
String departmentJson = "{'id' : 1, "
        + "'name': 'HR',"
        + "'users' : ["
            + "{'name': 'Alex','id': 1}, "
            + "{'name': 'Brian','id':2}, "
            + "{'name': 'Charles','id': 3}]}";
 
Gson gson = new Gson();
 
Department department = gson.fromJson(departmentJson, Department.class); 
 
System.out.println(department);
输出:
Department [id=1, name=HR,
    users=[User [id=1, name=Alex],
        User [id=2, name=Brian],
        User [id=3, name=Charles]]]
https://www.leftso.com/article/653.html

相关文章
       学习使用Gson JsonReader类,这是一个基于拉的流式JSON解析器,它有助于将JSON作为标记流来读取​GSON1. JsonReader是什么JsonReader是流式...
前言值得一提的是JSON只有数组数据类型
Java EE 8 JSON Pointer讲解,Java EE 8包含JSON处理API的更新,并为最新的JSON标准提供最新的IEFT标准。
java json字符串转对象_json转换为java对象_ json字符串转对象数组
java编程中使用nodejs的apidoc工具生成Java api美观的HTML文档,apidoc可以根据代码注释生成web api文档,支持大部分主流语言
fastJSON字符串类型数据中的日期转换为Java bean的日期对象
Java编程之Spring Boot中使用jsp视图模板
Java生成密钥对采用hutool工具生KeyPair keyPair = SecureUtil.generateKeyPair("RSA"); PrivateKey aPrivate = k...
引言AES代表高级加密系统,它是一种对称加密算法
1.引入相关el表达式标签库&lt;%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%&gtl;&lt;%@
json-path 组件使用java 版 jsonpath引入依赖        &lt;dependency&gtl;            &lt;groupId&gtl;com.jay...
jsp中/el表达式中将后台传来的时间戳格式化为年月日时分秒
httpclient4.5使用详解 httpclient 4.5 post传递json参数
handlerexceptionresolver 返回json
Log4j 2 简介       Apache Log4j 2是对Log4j 1.x的升级,相对于其先前版本进行了重大改进,例如性能改进,自动重新加载已修改的配置文件,java 8 lambda...