You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Java中反序列化含users与pokemon数组的JSON(优先Gson)

用Gson将目标JSON反序列化为Java对象

步骤1:添加Gson依赖

如果使用Maven,在pom.xml中加入以下依赖:

<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version> <!-- 使用最新稳定版 -->
</dependency>

Gradle用户则在build.gradle中添加:

implementation 'com.google.code.gson:gson:2.10.1'

步骤2:定义对应Java实体类

需要创建三个类映射JSON结构,字段名与JSON键严格对应(也可通过@SerializedName自定义映射关系):

顶层容器类(PokemonAppData)

import java.util.List;

public class PokemonAppData {
    private List<User> users;
    private List<Pokemon> pokemon;

    // 生成getter、setter方法
    public List<User> getUsers() {
        return users;
    }

    public void setUsers(List<User> users) {
        this.users = users;
    }

    public List<Pokemon> getPokemon() {
        return pokemon;
    }

    public void setPokemon(List<Pokemon> pokemon) {
        this.pokemon = pokemon;
    }
}

User类

public class User {
    private int id;
    private String name;
    private String email;

    // 生成getter、setter方法
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Pokemon类

public class Pokemon {
    private int userId;
    private String name;
    private String frontImg;
    private String backImg;
    private String type;
    private int hp;
    private int id;

    // 生成getter、setter方法
    public int getUserId() {
        return userId;
    }

    public void setUserId(int userId) {
        this.userId = userId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getFrontImg() {
        return frontImg;
    }

    public void setFrontImg(String frontImg) {
        this.frontImg = frontImg;
    }

    public String getBackImg() {
        return backImg;
    }

    public void setBackImg(String backImg) {
        this.backImg = backImg;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getHp() {
        return hp;
    }

    public void setHp(int hp) {
        this.hp = hp;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

步骤3:执行反序列化操作

将JSON字符串转换为PokemonAppData对象,示例代码如下:

import com.google.gson.Gson;

public class DeserializeDemo {
    public static void main(String[] args) {
        // 目标JSON字符串(注意转义双引号)
        String json = "{\"users\":[{\"id\":1,\"name\":\"Ash\",\"email\":\"ashketchum@kanto.com\"},{\"id\":2,\"name\":\"Gary\",\"email\":\"garyoak@kanto.com\"}],\"pokemon\":[{\"userId\":1,\"name\":\"Ember\",\"frontImg\":\"/images/pokemon/local-mon/ember/front.png\",\"backImg\":\"/images/pokemon/local-mon/ember/back.png\",\"type\":\"fire\",\"hp\":100,\"id\":1},{\"userId\":1,\"name\":\"Draggy\",\"frontImg\":\"/images/pokemon/local-mon/dragon/front.png\",\"backImg\":\"/images/pokemon/local-mon/dragon/back.png\",\"type\":\"dragon\",\"hp\":100,\"id\":2}]}";

        // 初始化Gson实例
        Gson gson = new Gson();

        // 反序列化
        PokemonAppData data = gson.fromJson(json, PokemonAppData.class);

        // 验证结果
        System.out.println("用户列表:");
        for (User user : data.getUsers()) {
            System.out.println(user.getId() + " - " + user.getName());
        }

        System.out.println("\n宝可梦列表:");
        for (Pokemon p : data.getPokemon()) {
            System.out.println(p.getId() + " - " + p.getName() + "(属性:" + p.getType() + ")");
        }
    }
}

补充:使用Jackson库的实现(可选)

如果选择Jackson库,先添加依赖:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>

反序列化代码示例:

import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonDeserializeDemo {
    public static void main(String[] args) throws Exception {
        String json = "你的目标JSON字符串";
        ObjectMapper objectMapper = new ObjectMapper();
        PokemonAppData data = objectMapper.readValue(json, PokemonAppData.class);
        // 后续验证操作同Gson示例
    }
}

内容的提问来源于stack exchange,提问作者Jae

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 20:05:36