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

如何用Jackson/Gson将指定JSON解析为ViewModelPOJO类?

用Jackson/Gson解析嵌套JSON到POJO类

你的需求完全可以通过Jackson或Gson实现,你编写的POJO类已经接近正确,仅需修正字段名与JSON的匹配问题即可。

修正后的POJO类

JSON中的字段名为metadata,但你原代码中DeviceNode类的字段是metaData(大小写不一致),需要调整为一致,或通过注解映射。以下是修正后的代码:

class ViewModelPOJO {
    private List<DeviceNode> deviceNodes;

    // 生成getter、setter方法,也可使用Lombok的@Data注解简化
    public List<DeviceNode> getDeviceNodes() {
        return deviceNodes;
    }

    public void setDeviceNodes(List<DeviceNode> deviceNodes) {
        this.deviceNodes = deviceNodes;
    }
}

public class DeviceNode {
    private String header;
    private List<DeviceNode> children;
    // 字段名与JSON保持一致
    private String metadata;

    // 生成getter、setter方法
    public String getHeader() {
        return header;
    }

    public void setHeader(String header) {
        this.header = header;
    }

    public List<DeviceNode> getChildren() {
        return children;
    }

    public void setChildren(List<DeviceNode> children) {
        this.children = children;
    }

    public String getMetadata() {
        return metadata;
    }

    public void setMetadata(String metadata) {
        this.metadata = metadata;
    }
}

若不想修改字段名,保留metaData,可通过注解映射:

  • Jackson使用@JsonProperty("metadata")标记字段
  • Gson使用@SerializedName("metadata")标记字段

Jackson实现步骤

  1. 引入Jackson依赖(以Maven为例):
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.15.2</version>
</dependency>
  1. 解析JSON代码:
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;

public class JacksonParser {
    public static void main(String[] args) {
        ObjectMapper mapper = new ObjectMapper();
        try {
            ViewModelPOJO viewModel = mapper.readValue(new File("your-json-file.json"), ViewModelPOJO.class);
            System.out.println("解析完成,设备节点总数:" + viewModel.getDeviceNodes().size());
            // 可进一步遍历嵌套结构
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Gson实现步骤

  1. 引入Gson依赖(以Maven为例):
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.10.1</version>
</dependency>
  1. 解析JSON代码:
import com.google.gson.Gson;
import java.io.FileReader;
import java.io.IOException;

public class GsonParser {
    public static void main(String[] args) {
        Gson gson = new Gson();
        try (FileReader reader = new FileReader("your-json-file.json")) {
            ViewModelPOJO viewModel = gson.fromJson(reader, ViewModelPOJO.class);
            System.out.println("解析完成,设备节点总数:" + viewModel.getDeviceNodes().size());
            // 可进一步遍历嵌套结构
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

说明

Jackson和Gson都支持递归解析嵌套结构,因为DeviceNode类中包含了自身类型的List,框架会自动处理层级嵌套的JSON数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 12:45:06