Java put在我的JsonObject中创建一个新节点,如何使它搜索该节点,然后替换该值?
我有一个自定义JsonOBject实现,其中包含以下方法:Java put在我的JsonObject中创建一个新节点,如何使它搜索该节点,然后替换该值?,java,android,json,node.js,Java,Android,Json,Node.js,我有一个自定义JsonOBject实现,其中包含以下方法: public TestJsonNode change(String nodeName, Object newValue) throws JSONException, JsonProcessingException, IOException { String jsonString = jsonData.toString(); JSONObject jsonObject = new JSONObject(js
public TestJsonNode change(String nodeName, Object newValue) throws JSONException, JsonProcessingException, IOException {
String jsonString = jsonData.toString();
JSONObject jsonObject = new JSONObject(jsonString);
jsonObject.put(nodeName, newValue);
JsonNode newJsonData = (new ObjectMapper()).readTree(jsonObject.toString());
jsonData = newJsonData;
return this;
}
现在我有一个JSON示例:
{
"result": {
"one": 5030,
"two": 9999,
"three": 4,
"four": 0,
"five": 50,
"six": 503,
"seven_array": {
"id": 4,
"quantity": 50,
"name": "100% Energy Potion"
},
"eight": 50,
"nine": 5,
"ten": 4000,
"eleven": 400,
"twelve": 150,
"thirteen": 9999
},
"fourteen": true,
"fifteen": true
}
我试着用这样的方法
TestJsonNode jsonNode = new TestJsonNode(jsonStringExample);
jsonNode.change("eight", 0);
然后我得到的结果是新创建了“八”
节点,并将值与“十四”
和“十五”
放在一起,如下所示:
{
"result": {
"one": 5030,
"two": 9999,
"three": 4,
"four": 0,
"five": 50,
"six": 503,
"seven_array": {
"id": 4,
"quantity": 50,
"name": "100% Energy Potion"
},
"eight": 50,
"nine": 5,
"ten": 4000,
"eleven": 400,
"twelve": 150,
"thirteen": 9999
},
"eight": 0,
"fourteen": true,
"fifteen": true
}
请注意,ObjectMapper
是线程安全的,并且在构造之后是无状态的。不要在每次通话中都创建一个新的。将单个实例存储在每个人都可以访问的地方并重用它。如果根JSON对象和名为result
的对象都包含一对名为eight
的对象,该怎么办?(你所要求的不是JSON的工作方式。找到JSON对象和你想要更改的对象对,然后进行更改。)