1

我有一个看起来像这样的嵌套 JSON。

{
"eventId" : "12345",
"eventName" : "carnival",
"object": {
    "objectId" : "5678",
    "objectFiles" : [{"fileName":"text.txt", "fileContent":"This is a test file."},
                    {"fileName":"text2.txt", "fileContent":"This is a test2 file."}]
    }
}

在这里,我必须获取 eventFiles 键,将 fileContent 值替换为 Base64Encoded String 并将其放回相同的 eventFiles 属性。我知道我可以使用 Jackson Mapper 将其转换为 Map 并逐个迭代它们,直到找到 eventFiles 键,然后获取并替换该值并再次将其存储回来。我尝试使用TypeReference<String, Object>甚至将其转换为地图,TypeReference<Map<String, Map<String, Object>>>但这里的问题是嵌套的 JSON,最终它将成为地图内部的地图内部的地图,这将变得非常难以处理。

有没有其他更简单的方法来实现这一点?任何建议都会非常有帮助。提前致谢。

4

1 回答 1

2

如果您的 Json 具有固定格式,您可以使用 Gson ( https://github.com/google/gson ) 并将其转换为代表您的 json 的对象。

它看起来像这样:

public class CustomEvent {
    String eventId;
    String eventName;
    CustomObject object;
}

public class CustomObject {
    String objectId;
    List<CustomFile> objectFiles;
}

public class CustomFile {
    String fileName;
    String fileContent;
}

你可以像这样使用它:

Gson gson = new Gson();
CustomEvent event = gson.fromJson(yourString, Event.class)
// Do whatever you want with the event

String modifiedJson = gson.toJson(event);

希望它有所帮助

于 2017-07-04T21:15:24.813 回答