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

Java解析多层JSON对象失败:无法访问子节点属性求助

问题解决方法

你的问题出在没有将loose_item1节点强转为JSONObject类型,而是用Object接收。Object类没有get()方法,自然无法访问内部属性。

修正后的代码如下:

public static void main(String[] args) {
    JSONParser parser = new JSONParser();

    try {
        Object obj = parser.parse(new FileReader("/Users/mohitjoshi/Desktop/Tills-Karate-Automation-Test 2/src/test/java/com/tills/e2e/karate/template/masterData.json"));
        JSONObject jsonObject = (JSONObject) obj;
        JSONObject productObj = (JSONObject) jsonObject.get("product");
        // 关键修正:将loose_item1强转为JSONObject
        JSONObject looseItem1 = (JSONObject) productObj.get("loose_item1");
        // 现在可以正常获取内部属性
        String gtin = (String) looseItem1.get("gtin");
        String numberOfUnits = (String) looseItem1.get("numberOfUnits");
        String unitOfMeasure = (String) looseItem1.get("unitOfMeasure");
        
        System.out.println("gtin: " + gtin);
        System.out.println("numberOfUnits: " + numberOfUnits);
        System.out.println("unitOfMeasure: " + unitOfMeasure);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

核心说明

  • JSON里的每个嵌套对象都需要对应转成JSONObject类型,才能调用get()方法访问其内部键值对。
  • 如果属性值是字符串类型,建议再强转成String,避免后续类型转换问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:10:32