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
相关产品推荐
相关产品推荐

