Java kotlin中此XML响应的POJO对象
我正在使用一个API,它返回XML,如下所示:Java kotlin中此XML响应的POJO对象,java,xml,jackson,kotlin,Java,Xml,Jackson,Kotlin,我正在使用一个API,它返回XML,如下所示: <xyz-objects version="1.0"> <object pk="1" model="roll"> <field type="BigIntegerField" name="roll_number">1000000714</field> <field type="CharField" name="status">DL</field&
<xyz-objects version="1.0">
<object pk="1" model="roll">
<field type="BigIntegerField" name="roll_number">1000000714</field>
<field type="CharField" name="status">DL</field>
<field name="scans">
<object pk="1" model="scan_stages">
<field type="DateTimeField" name="updated_on">11 Jul, 2017, 17:40</field>
</object>
</field>
</object>
</xyz-objects>
1000000714
DL
2017年7月11日17:40
我正在使用Jackson的XML映射器
我尝试为此编写一个POJO对象,但没有成功
如何处理元素的属性,如类型和名称?
你能举例说明吗?因为你没有提供模式,所以很难猜测模型的某些部分。特别是,很难猜测
字段
模型。因此,我将把它反序列化为一个动态对象,它可以处理任何事情。以防你有一些额外的字段,这里没有提到
首先,创建一些数据类:
@XmlRootElement(name = "xyz-objects")
@JsonIgnoreProperties(ignoreUnknown = true)
data class XyzObjects(
@JacksonXmlProperty(isAttribute = true)
val version: String,
@JsonProperty(value = "object")
@JacksonXmlElementWrapper(useWrapping = false)
val objects: List<Object>
)
@XmlRootElement(name = "object")
@JsonIgnoreProperties(ignoreUnknown = true)
data class Object(
@JacksonXmlProperty(isAttribute = true)
val pk: String,
@JacksonXmlProperty(isAttribute = true)
val model: String,
@JsonProperty(value = "field")
@JacksonXmlElementWrapper(useWrapping = false)
val fields: List<JsonNode>
)
它将打印:
XyzObjects(version=1.0, objects=[Object(pk=1, model=roll, fields=[{"type":"BigIntegerField","name":"roll_number","":"1000000714"}, {"type":"CharField","name":"status","":"DL"}, {"name":"scans","object":{"pk":"1","model":"scan_stages","field":{"type":"DateTimeField","name":"updated_on","":"11 Jul, 2017, 17:40"}}}])])
根据我在这里做的调查,这里有一个比
“我试着写……”很好!代码的相关部分?任何错误(具体是什么错误)?首先:您的XML无效:)
xyz对象
被ecomexpress对象
关闭。您还缺少扫描的
。显然是输入错误。@madhead完成了..现在请回答此返回“参数#0没有属性名称注释;当多参数构造函数注释为Creator时必须有名称”,然后我将localName属性添加到元素中,然后返回:“指定为非null的参数为null:参数pk”这只是一个示例。如果不知道您的完整模式,我无法预测确切的类型。在这里,请参阅:“指定为非null的参数为null:Parameter pk”在某些情况下,我不希望pk
为null,因为您的所有示例都有它。对于这种特殊情况,请使用可空类型:val pk:String?
我使用了与本问题相同的XML不,您没有。在该XML中,所有对象
都具有非空的pk
。
XyzObjects(version=1.0, objects=[Object(pk=1, model=roll, fields=[{"type":"BigIntegerField","name":"roll_number","":"1000000714"}, {"type":"CharField","name":"status","":"DL"}, {"name":"scans","object":{"pk":"1","model":"scan_stages","field":{"type":"DateTimeField","name":"updated_on","":"11 Jul, 2017, 17:40"}}}])])
data class Field(
@JacksonXmlProperty(isAttribute = true)
val type: String,
@JacksonXmlProperty(isAttribute = true)
val name: String,
) {
@JacksonXmlText
lateinit var value: String private set
}