Java-Jackson数组映射

Java-Jackson数组映射,java,json,jackson,gson,Java,Json,Jackson,Gson,给定以下JSON { "obj" : { "f1" : "blah", "f2" : "blah", "f3" : [{"z1" : "blah", "arr" : [{"m1" : "blah", "m2" : "blah"}]}] } } 我已经厌倦了使用@JsonProperty和@JsonCreator来映射“m1”和“m2”值,但运气不好 使用@JsonCreator公共卡(地图道具){}我得到以下错误: Argumen

给定以下JSON

{
    "obj" : {
        "f1" : "blah",
        "f2" : "blah",
        "f3" : [{"z1" : "blah", "arr" : [{"m1" : "blah", "m2" : "blah"}]}]
    }
}
我已经厌倦了使用
@JsonProperty
@JsonCreator
来映射
“m1”
“m2”
值,但运气不好

使用
@JsonCreator公共卡(地图道具){}
我得到以下错误:

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
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公共卡(@JsonProperty(“m1”)字符串m1,@JsonProperty(“m2”)字符串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
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”)私人卡[]卡
f3
类上,但它也没有帮助

更新2

我已经在上面的更新中更改了数组类型,现在我没有得到错误,但它的行为并不像我希望的那样(我希望处理映射)


如果m1和m2不是硬编码属性,那么您应该使用TypeReference将json转换为java映射。看到这个了吗


否则,您可以将“arr”映射到您的arr类,其中字符串m1和字符串m2作为字段。

尝试@JsonProperty(“arr”)私有列表cards@Nailgun,我得到错误
找不到类型[简单类型,类MyObj$Obj$Card]的合适构造函数]:无法从JSON对象实例化(需要添加/启用类型信息吗?)[来源:java.io。StringReader@751bbe4f;第1行,第201列](通过引用链:MyObj[“obj”]->obj[“cards”])
。有什么线索吗?你能展示一下你使用的类吗?@eugen,你有没有机会详细说明错误以及错误的原因?没有类我不确定,但是如果它们是内部类(非静态的)它失败是正常的,jackson无法反序列化为此类类型。但是“arr”是一个数组。因此,它应该映射到数组或数组所包含的对象列表。是否有机会获得有关您上次建议的片段?我不确定我是否理解您的要求。您可以始终使用Map.entrySet()作为集合访问这些对象。我可以想象如何将{“messages”:[“msg 1”、“msg 2”、“msg 3”]}或{“messages”:[“name”:“val1”、“name”:“val2”]}反序列化到一个列表中,而不是您的示例。请您详细说明错误,即错误的含义。也许这可以让我解决这个问题。