Java - 杰克逊阵列映射

时间:2012-10-10 14:59:43

标签: java json jackson gson

给出以下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

我在上面的更新中更改了数组类型,现在我没有得到错误,但它没有按照我的意愿行事(我想处理映射)。

是否有可能以可以纠正错误的方式解释错误。

1 个答案:

答案 0 :(得分:0)

如果m1和m2不是硬编码属性,则应使用TypeReference将json转换为java map。见entry

否则你可以映射&#34; arr&#34;您的Arr类具有字符串m1和字符串m2作为字段。