Java 我如何在与Jackson的通话中辨别类型
我有一些json看起来像这样:Java 我如何在与Jackson的通话中辨别类型,java,json,jackson,Java,Json,Jackson,我有一些json看起来像这样: [ {"type":"child_obj_1", "message": "blah"}, {"type":"child_obj_3", "apple": "red"}, {"type":"child_obj_2", "banana": "fire!"}, {"type":"doesnt_exist", "message": "blah"} ] 这些类型对应如下所示的类型(“不存在”类型不存在): 我希望能够将json列表解析为这些类型。“不存在”
[
{"type":"child_obj_1", "message": "blah"},
{"type":"child_obj_3", "apple": "red"},
{"type":"child_obj_2", "banana": "fire!"},
{"type":"doesnt_exist", "message": "blah"}
]
这些类型对应如下所示的类型(“不存在”类型不存在):
我希望能够将json列表解析为这些类型。“不存在”类型可以无声地失败。我如何使用Jackson做到这一点?您是否尝试过Jackson的
@JsonTypeInfo
注释?查看它的详细信息
示例用法:
// Include Java class name ("com.myempl.ImplClass") as JSON property "class"
@JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class")
// Include logical type name (defined in impl classes) as wrapper; 2 annotations
@JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)
@JsonSubTypes({com.myemp.Impl1.class, com.myempl.Impl2.class})
我正在尝试,但我如何://将Java类名(“com.myempl.ImplClass”)作为JSON属性“class”包含
// Include Java class name ("com.myempl.ImplClass") as JSON property "class"
@JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class")
// Include logical type name (defined in impl classes) as wrapper; 2 annotations
@JsonTypeInfo(use=Id.NAME, include=As.WRAPPER_OBJECT)
@JsonSubTypes({com.myemp.Impl1.class, com.myempl.Impl2.class})