Как изменить значение определенного поля в файле JSON с помощью json-simple после разбора файла JSON - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно изменить определенное значение ключа в моем файле json, это вложенный файл JSON, и я прошел до этой пары ключ-значение, но я не могу изменить значение и не знаю, как написать обратно в JSON.

Использование json-simple для анализа JSON

Это файл JSON:

{
  "entity": {
    "id": "ppr20193060018",
    "data": {
      "relationships": {
        "productpresentationtolot": [
          {
            "id": "",
            "relTo": {
              "id": "",
              "data": {
                "attributes": {
                  "rmsitemid": {
                    "values": [
                      {
                        "source": "internal",
                        "locale": "en-US",
                        "value": "2019306"
                      }
                    ]
                  }
                }
              },
              "type": "lot"
            }
          }
        ]
      }
    },
    "type": "productpresentation"
  }
}

Чтение с использованием кода ниже:

JSONParser parser = new JSONParser();
reader = new FileReader("path.json");
JSONArray rmsArray =(JSONArray) rmsitemid.get("values");
for(Object obj2:rmsArray)
{
JSONObject tempObj1=(JSONObject)obj2;
System.out.println(tempObj1.get("value"));
}

Я могу напечатать то, что там в значении (ключе), то есть 2019306, но я понятия не имею, как я могу заменить его на какое-то другое значение, и это должно также изменить значение в файле JSON.

Любая помощь приветствуется!

1 Ответ

0 голосов
/ 13 мая 2019

Вот полный пример того, как читать и писать с использованием библиотеки simple-json:

// read from resource file
JSONObject value;
try (Reader in = new InputStreamReader(getClass().getResourceAsStream("/simple.json"))) {
    JSONParser parser = new JSONParser();
    value = (JSONObject) parser.parse(in);
}
JSONObject entity = (JSONObject) value.get("entity");

// update id
entity.put("id", "manipulated");

// write to output file
try (Writer out = new FileWriter("output.json")) {
    out.write(value.toJSONString());
}

Объекты JSONO - это в основном Карты. Таким образом, вы можете просто поместить значения внутри.

Чтобы снова создать строку JSON, используйте toJSONString(). В моем примере я создаю новый выходной файл. Вы также можете переопределить исходный файл ввода. Но вы должны написать файл полностью.

...