【发布时间】:2012-10-01 02:33:16
【问题描述】:
鉴于以下 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
"arr"的字段如何使用Jackson注解映射?
谢谢。
更新
我还尝试在 f3 类中包含 @JsonProperty("arr") private Card[] cards;,但它也没有帮助。
更新 2
我在上面的更新中更改了数组类型,现在我没有收到错误但它的行为不像我希望的那样(我想处理映射)。
是否有机会以我可以纠正的方式解释错误。
【问题讨论】:
-
尝试@JsonProperty("arr") 私有列表
卡片 -
@Nailgun,我收到错误
No suitable constructor found for type [simple type, class MyObj$Obj$Card]: can not instantiate from JSON object (need to add/enable type information?) at [Source: java.io.StringReader@751bbe4f; line: 1, column: 201] (through reference chain: MyObj["obj"]->Obj["cards"])。有什么线索吗? -
你能展示你使用的类吗?
-
@eugen,您能否详细说明错误及其原因?
-
没有类我不确定,但如果它们是内部类(非静态),失败是正常的,jackson 无法反序列化为这种类型。