替换随机层次结构中的特定JSON值

时间:2018-09-03 13:34:09

标签: java json gson

我有很多不同格式的JSON文件,在这里我只需要替换其层次结构中的几个相同元素/对象。遗憾的是,在使用不同的JSON文件的情况下,此层次结构是不同的,并且我无法使用预定义/硬编码的层次结构。在某些情况下,我有数百种不同的变体。

这些元素可以具有不同的父元素或深度级别,但是我很容易通过例如以下方式找到它们:

JsonObject obj = allJsonData.getAsJsonObject(objectName);

还有值,我需要用它替换这个对象,我从另一个JSON数据中获取并很容易获得它,例如。以及JsonObject。不幸的是,JsonObject没有类似getParentObject方法的方法来获取其父对象,然后将其删除并从另一个JSON数据添加新的JsonObject。但也许存在其他解决方案。我对JSON非常了解。

1 个答案:

答案 0 :(得分:0)

对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);

它设置它而不是以前的值。