我有一个嵌套的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键,用Base64Encoded String替换fileContent值并将其放回到相同的eventFiles属性。我知道我可以使用Jackson Mapper将其转换为Map并逐个迭代它们,直到我找到eventFiles键,然后获取并替换该值并再次存储它。我尝试使用TypeReference<String, Object>
或甚至TypeReference<Map<String, Map<String, Object>>>
将其转换为Map,但这里的问题是嵌套的JSON,最终它将成为Map内部Map的Map,这将变得非常复杂。
还有其他更简单的方法来实现这一目标吗?任何建议都会非常有用。提前谢谢。
答案 0 :(得分:2)
如果您的Json具有固定格式,您可以使用Gson(https://github.com/google/gson)并将其转换为代表您的json的Object。
它看起来像这样:
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);
希望有所帮助