Заменить определенные значения JSON в случайной иерархии - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть много JSON-файлов различного формата, где мне нужно заменить только несколько одинаковых элементов / объектов в их иерархии. К сожалению, эта иерархия отличается в случае разных файлов JSON, и я не могу использовать предопределенную / жестко закодированную иерархию. В некоторых случаях у меня есть более ста различных вариантов.

Эти элементы могут иметь разные родительские элементы или уровень глубины, но я легко могу найти их, например:

JsonObject obj = allJsonData.getAsJsonObject(objectName);

И значение, которым мне нужно заменить этот объект, я беру из других данных JSON и легко могу получить его как например. JsonObject также. К сожалению, у JsonObject нет чего-то вроде метода getParentObject, чтобы получить его родителя, а затем удалить его и добавить новый JsonObject из других данных JSON. Но, возможно, существует другое решение. Я довольно новичок в JSON.

1 Ответ

0 голосов
/ 04 сентября 2018

После некоторых исследований исходного кода библиотеки GSON я обнаружил, что метод JsonObject :: add делает то, что мне нужно. Он работает со сбором ключей / значений и обновляет таким образом значения, как обычные функции словаря. Просто имя этого метода немного вводит в заблуждение, так как называется add .

Чтобы изменить конкретную часть / объект JSON в любой иерархии:

JsonObject rootJsonObject = ...; // JSON object which has all JSON data
JsonObject sourceJsonObject = ...; // JSON object with which I needed to replace specific JSON node
String name = ...; // name of JsonObject which I needed to replace

rootJsonObject.add(name, sourceJsonObject);

И он установил его вместо предыдущего значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...