我有以下 JSON,它是消息的通用包装器。从主题我可以确定内容是什么。
{
"subject" : "P:WORKSPACE:ADDED",
"msgType" : "FileInfo[]",
"contents" : [ {
"lastModified" : 1380552566000,
"name" : "genSPI.vhd.pshdl",
"size" : 630,
"syntax" : "unknown",
"type" : "pshdl"
} ]
}
现在,当我使用 objectReader 读取对象时,内容将是带有嵌入式 Maps 的通用 ArrayList,因为 objectReader 不知道如何处理内容。这对我来说没问题。但是我以后如何从内容中创建一个类?我不想使用 Jackson 的多态特性,因为 Message 可以包含的类不是静态已知的。
到目前为止,我发现的解决方案对我来说似乎相当笨拙:
final Object json = message.getContents();
final String jsonString = writer.writeValueAsString(json);
final FileInfo[] readValues = mapper.readValue(jsonString, FileInfo[].class);