Java 获取并更新嵌套的JSON属性值

Java 获取并更新嵌套的JSON属性值,java,json,jackson,objectmapper,jackson-databind,Java,Json,Jackson,Objectmapper,Jackson Databind,我有一个嵌套的JSON,看起来像这样 { "eventId" : "12345", "eventName" : "carnival", "object": { "objectId" : "5678", "objectFiles" : [{"fileName":"text.txt", "fileContent":"This is a test file."}, {"fileName":"text2.txt", "fileContent":"T

我有一个嵌套的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字符串替换fileContent值,并将其放回相同的eventFiles属性。我知道我可以使用Jackson Mapper将其转换为Map并逐个迭代,直到找到eventFiles键,然后获取并替换该值并再次存储。我尝试使用
TypeReference
甚至
TypeReference
将其转换为一个映射,但这里的问题是嵌套的JSON,最终它将成为映射内部的映射,而映射内部的映射将变得非常复杂


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

如果您的Json有固定格式,您可以使用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);

希望有帮助

谢谢你的回答。我不会有固定的格式。它一直在变化。所以我必须完成这个任务。