【发布时间】:2016-10-07 11:48:46
【问题描述】:
我在以下架构中有 json 对象:
{
name: "foo",
timestamp: 1475840608763,
payload:
{
foo: "bar"
}
}
这里payload字段包含一个内嵌的json对象,这个对象的schema是动态的,每次都不一样。
payload 对象是从不同 API 服务获得的原始输出,以及不同 API 服务的不同方法。不可能将其映射到所有可能的值。
是否可以有如下的java类:
public class Event
{
public String name;
public long timestamp;
public JsonObject payload;
}
或者类似的东西,所以我可以接收基本架构并对其进行处理,然后将其发送到相关类,该类会将payload 转换为相应的预期类?
【问题讨论】:
-
杰克逊 @JsonAnyGetter/Setter 是你的朋友 cowtowncoder.com/blog/archives/2011/07/entry_458.html
-
@Hector 在这种情况下,它会发送
payload作为我的 AnySetter 的键,并将 json 对象作为值,还是会调用 AnySetter 来获取有效负载的嵌套属性?跨度> -
你的 json 无效,(只是说)
-
我认为
@JsonAnyGetter和@JsonAnySetter没有必要。映射到JsonNode就可以了。查看我的answer 了解更多详情。 -
我认为 JsonNode 不是必需的 @JsonAnyGetter/Setter 确实可以解决问题。我不喜欢混合 Json“值对象”和 JsonNodes,不知何故它感觉不“正确”。