java - 使用 java 将 JSON 对象添加到现有 JSON 数组中

标签 java json

这是我的 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/

相关文章:

java - 对于非常大的 N 求斐波那契第 N 项

java - 删除字符后的所有内容,包括该字符

java - 如何使用 Apache POI 获取 MS Excel 单元格的别名

java - 插入HashMap后如何在内存中查找大小?

mysql - 收到sequelize的响应后修改JSON

php - 使用 AJAX 调用和 JSON 数据填充表单

java - 如何按顺序保留路径中的单元列表?

json - 如何在没有中间字符串的情况下将node.js Buffer 转换为JavaScript 对象

jquery - 如何打印jquery对象/数组

javascript - 显示与 JSON 数据的 'Open Hours' 日期/时间对齐的 div