我有很多不同格式的JSON文件,在这里我只需要替换其层次结构中的几个相同元素/对象。遗憾的是,在使用不同的JSON文件的情况下,此层次结构是不同的,并且我无法使用预定义/硬编码的层次结构。在某些情况下,我有数百种不同的变体。
这些元素可以具有不同的父元素或深度级别,但是我很容易通过例如以下方式找到它们:
JsonObject obj = allJsonData.getAsJsonObject(objectName);
还有值,我需要用它替换这个对象,我从另一个JSON数据中获取并很容易获得它,例如。以及JsonObject。不幸的是,JsonObject没有类似getParentObject方法的方法来获取其父对象,然后将其删除并从另一个JSON数据添加新的JsonObject。但也许存在其他解决方案。我对JSON非常了解。
答案 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);
它设置它而不是以前的值。