如何使用1st JSON对象覆盖第二个对象JSON

时间:2016-03-22 10:59:08

标签: java json

我遇到需要将第二个JSON对象值覆盖为1st的情况。

JSON原创: -

{
    "products": {
        "productsApp15": {
            "status": "active",
            "attribute_set": "Apparel",
            "name": "productsApp16",
            "product_type": "product",
            "code": "productsApp16"
        }
    }
}

我的第一个目标: -

{
    "productsApp15": {
        "attribute_set": "Apparel",
        "status": "active",
        "name": "productsApp16",
        "product_type": "product",
        "code": "productsApp16"
    }
}

我的第二个对象: -

{
    "attribute_set": "Apparel",
    "status": "active",
    "name": "productsApp16",
    "product_type": "product",
    "code": "try"
}

如果您看到键的值 - > code在此处更新。我希望在我的真实或第一个JSON对象中进行此更改,以便将其传递给我的Payload

我的代码: -

    FileReader reader = new FileReader(filePath);

    JSONParser jsonParser = new JSONParser();
    JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);

    JSONObject jsonObject1 = (JSONObject) jsonObject.get("products");
    JSONObject jsonObject2 = (JSONObject)jsonObject1.get("productsApp15");
    String firstName = (String) jsonObject2.get("code").toString();

    System.out.println("The first name is: " + firstName);

    jsonObject2.remove("code");
    jsonObject2.put("code", "try");

    JSONObject jsonObject3 = (JSONObject)jsonObject1.get("productsApp15");
    String firstName2 = (String) jsonObject2.get("code").toString();
    System.out.println("The first name is: " + jsonObject3);

    JSONObject combined = new JSONObject();
    combined.put("Object1", jsonObject1);
    combined.put("Object2", jsonObject3);
    String firstName3 = (String) jsonObject2.get("code").toString();
    System.out.println("The first name is: " + combined);

我的主要目标: - 我正在阅读一个包含我的JSON的文件,因为你可以看到我的对象又在另一个对象中。

我想更新该值,然后将其传递给有效负载。

但是如何获得具有更新值的原始JSON结构?

有可能吗?

1 个答案:

答案 0 :(得分:1)

通过根据JSON中所需的结构构造Java类,可以实现这一点。

与JSON读者和解析器混淆JSON是有风险的。

public class Products{
    private List<Product> productsList;
}

public class Product{
    private Map<String, ProProps> map = new HashMap<>();
    class ProProps{
       private String code;
       private String name;
       ...
    }
}

这使您可以映射对象和值。

按键获取所需产品的价值,并替换所需的道具。

虽然发生了Java-Json的转换,但是在开发时可能会发生许多扩展。

您可以使用this示例进行转换并执行所需的操作。