【发布时间】:2012-12-13 19:35:28
【问题描述】:
我有一些以下格式的 JSON,我正在尝试用 Jackson 解析 -
"response":{
"response_inner":{
"a":{"field1":2,"field2":0,"field3":5,"field4":0,"field5":[{"field5_1":"b","field5_2":1},{"field5_1":"c","field5_2":1}]},
"d":{"field1":2,"field2":6,"field3":11,"field4":0,"field5":[{"field5_1":"c","field5_2":1},{"field5_1":"b","field5_2":1}]},
"response_inner_bool":false
}
}
这里的“a”、“b”等是一些可以在每个响应中改变的字符串。
我创建了一个 Java 对象来表示“response_inner”(我们称之为 ResponseInner)和另一个来表示包含字段的对象(我们称之为 FieldInfo),但我不确定如何解析这个使用 @JsonCreator 和 @JsonProperty 注释 - ResponseInner 对象可以包含任意数量的 String -> FieldInfo 映射。
我试着像这样解析它-
public class Response {
private ResponseInner responseInner;
@JsonCreator
public Response(@JsonProperty("response_inner") ResponseInner responseInner) {
this.reponseInner = responseInner;
}
}
public class ResponseInner {
private Map<String, FieldInfo> stringToFieldInfoMap;
private boolean responseInnerBool;
@JsonCreator
public ResponseInner(Map<String, FieldInfo> stringToFieldInfoMap, @JsonProperty("response_inner_bool") boolean responseInnerBool ) {
this.stringToFieldInfoMap = stringToFieldInfoMap;
this.responseInnerBool = responseInnerBool;
}
}
但它抱怨构造函数的参数#0没有属性名称注释;当多参数构造函数注释为 Creator 时必须有名称。有关如何解决此问题的任何建议?
【问题讨论】: