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

如何使用Alibaba JSON库解析含内层结构的JSON文件?

获取Fastjson内层JSON字段的两种方法

嘿,我来帮你搞定这个问题!你已经用Alibaba的Fastjson库解析了外层的JSON对象,要获取inputInfo里的sku和inputText字段其实很简单,这里有两种常用的实现方式,你可以根据场景选择:

方法一:逐层解析JSONObject

这种方式适合快速获取少量内层字段,直接逐层获取嵌套的JSONObject即可:

// 解析外层JSON对象
JSONObject inputObject = JSON.parseObject(input);
// 获取内层的inputInfo对象(用getJSONObject比强转更安全)
JSONObject inputInfoObj = inputObject.getJSONObject("inputInfo");
// 提取内层字段
String sku = inputInfoObj.getString("sku");
String inputText = inputInfoObj.getString("inputText");

这里推荐用getJSONObject()而不是直接get()后强转,因为它会直接返回JSONObject类型,避免出现类型转换异常,代码更健壮。

方法二:实体类映射解析

如果你的JSON结构比较固定,或者后续需要频繁操作这些字段,用实体类映射会更优雅,而且类型更安全:

首先定义对应的实体类(注意字段名要和JSON中的key一致,或者用@JSONField注解指定映射关系):

// 外层实体类
public class InputData {
    private String prop;
    private InputInfo inputInfo;

    // 生成Getter和Setter方法
    public String getProp() { return prop; }
    public void setProp(String prop) { this.prop = prop; }
    public InputInfo getInputInfo() { return inputInfo; }
    public void setInputInfo(InputInfo inputInfo) { this.inputInfo = inputInfo; }

    // 内层嵌套实体类
    public static class InputInfo {
        private String sku;
        private String inputText;

        // 生成Getter和Setter方法
        public String getSku() { return sku; }
        public void setSku(String sku) { this.sku = sku; }
        public String getInputText() { return inputText; }
        public void setInputText(String inputText) { this.inputText = inputText; }
    }
}

然后直接解析成实体类对象,再通过getter方法获取字段:

InputData inputData = JSON.parseObject(input, InputData.class);
String prop = inputData.getProp();
String sku = inputData.getInputInfo().getSku();
String inputText = inputData.getInputInfo().getInputText();

这种方式的好处是代码可读性更高,后续字段扩展或修改时只需要调整实体类即可,非常适合复杂JSON结构的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:09:39