这是我的 JSON,我将其作为字符串“additionalThirdParty”
{
"header": null,
"object": {
"ASSETS": {
"productDetails": [{
"productId": "PT_230",
"productThirdPartyDetails": [{
"thirdPartyId": "TH12",
"Location": "France",
"addtionalInfo": []
}]
}]
}
}
}
现在我的要求是在“productThirdPartyDetails”数组中添加一个额外的 JSON 对象。
新的 JSON 对象将是
{
"thirdPartyId": "TH11",
"Location": "Belgium",
"addtionalInfo": []
}
所以最终的对象应该是这样的
{
"header": null,
"object": {
"ASSETS": {
"productDetails": [{
"productId": "PT_230",
"productThirdPartyDetails": [{
"thirdPartyId": "TH12",
"Location": "France",
"addtionalInfo": []
},
{
"thirdPartyId": "TH11",
"Location": "Belgium",
"addtionalInfo": []
}
]
}]
}
}
}
我正在尝试添加如下内容。
将此字符串转换为 JSON
JSONObject obj = new JSONObject(additionalThirdParty);
Iterator<?> keys = obj.keys();
while (keys.hasNext()) {
JSONObject assetsObj = obj.getJSONObject("ASSETS");
Iterator<?> assetKeys = assetsObj.keys();
while (assetKeys.hasNext()) {
JSONArray productDetails = assetsObj.getJSONArray("productDetails");
logger.info("productDetails=" + productDetails);
}
}
它向我抛出 org.json.JSONException: JSONObject["ASSETS"] not found。
关于如何将新对象添加到该数组中的任何想法
最佳答案
为了实现你想要的,你必须正确地联系productThirdPartyDetails,如下所示,然后你必须确定获取需要添加的JSONObject的方式,我已经硬编码了部分最好通过方法获取该对象。
JSONObject obj = new JSONObject(additionalThirdParty);
JSONObject objtobeadded = new JSONObject();
objtobeadded.put("thirdPartyId", "TH11");
objtobeadded.put("Location", "Belgium");
objtobeadded.put("addtionalInfo", new JSONArray());
JSONObject assetsObj = obj.getJSONObject("object").getJSONObject("ASSETS");
JSONArray prodDetailsArr = assetsObj.getJSONArray("productDetails");
for(int i=0;i<prodDetailsArr.length();i++){
JSONArray arr = prodDetailsArr.getJSONObject(i).getJSONArray("productThirdPartyDetails");
arr.put(objtobeadded);
}
System.out.println(obj.toString());
关于java - 使用 java 将 JSON 对象添加到现有 JSON 数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47412889/