给出以下JSON
{
"obj" : {
"f1" : "blah",
"f2" : "blah",
"f3" : [{"z1" : "blah", "arr" : [{"m1" : "blah", "m2" : "blah"}]}]
}
}
我已经厌倦了使用@JsonProperty
和@JsonCreator
来映射"m1"
和"m2"
值,但没有运气。
使用@JsonCreator public Card(Map<String,Object> props) { }
我收到以下错误:
Argument #0 of constructor [constructor for MyObj$Obj$Card, annotations: {interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator()}] has no property name annotation; must have name when multiple-paramater constructor annotated as Creator
使用@JsonCreator public Card(@JsonProperty("m1") String m1, @JsonProperty("m2") String m2,){}
我收到以下错误:
Argument #0 of constructor [constructor for MyObj$Obj$Card, annotations: {interface com.fasterxml.jackson.annotation.JsonCreator=@com.fasterxml.jackson.annotation.JsonCreator()}] has no property name annotation; must have name when multiple-paramater constructor annotated as Creator
如何使用Jackson注释来映射"arr"
的字段?
感谢。
更新
我还尝试在@JsonProperty("arr") private Card[] cards;
课程中加入f3
,但也没有帮助。
更新2
我在上面的更新中更改了数组类型,现在我没有得到错误,但它没有按照我的意愿行事(我想处理映射)。
是否有可能以可以纠正错误的方式解释错误。
答案 0 :(得分:0)
如果m1和m2不是硬编码属性,则应使用TypeReference将json转换为java map。见entry
否则你可以映射&#34; arr&#34;您的Arr类具有字符串m1和字符串m2作为字段。