Java put在我的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

我有一个自定义JsonOBject实现,其中包含以下方法:

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对象和你想要更改的对象对,然后进行更改。)