我遇到需要将第二个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结构?
有可能吗?
答案 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示例进行转换并执行所需的操作。