如何使用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
相关产品推荐
相关产品推荐

