[英]Unable to deserialize JSON into a POJO (using Jackson)
我正在使用Jackson
将以下JSON
反序列化为POJO:
{
"etag": "\"SomeETag\"",
"jobComplete": true,
"jobReference": {
"jobId": "someJobId",
"projectId": "someProjectId"
},
"rows": [
{
"f": [
{
"v": "101"
},
{
"v": "FirstService"
},
{
"v": "firstAPI"
}
]
},
{
"f": [
{
"v": "102"
},
{
"v": "SecondService"
},
{
"v": "SecondAPI"
}
]
}
],
"totalRows": "2"
}
这是我正在使用的POJO:
@JsonAutoDetect
@JsonIgnoreProperties(ignoreUnknown = true)
public class Response {
public String etag;
public boolean jobComplete;
public List<FWrapper> rows = new ArrayList<FWrapper>();
}
class FWrapper {
public F f;
}
class F {
public List<VWrapper> vWrappers = new ArrayList<VWrapper>();
}
class VWrapper {
public String v;
}
我正在使用这段代码来进行映射:
ObjectMapper mapper = new ObjectMapper();
Response response = mapper.readValue(response, Response.class);
这是我得到的错误:
org.codehaus.jackson.map.JsonMappingException
:无法在[Source:java.io.StringReader@11563ff;来源:START_ARRAY标记中反序列化mypackage.F的实例。 line:1,column:227](通过引用链:mypackage.Response [“rows”] - > mypackage.FWrapper [“f”])
我检查了几个有类似错误的旧问题,但还是无法解决我的问题。 这个看起来与我的非常相似,因为正确的响应说Your data is problematic in that you have inner wrapper objects in your array
,我认为我的数据也是如此。 但我仍然无法做正确的POJO映射。 任何指针将不胜感激。
编辑:更正了一个错字(我正在使用的Json
是有效的)
您的班级模型与您的JSON不匹配。
在您的JSON中,f是一个数组而不是一个对象。 在你的班级中,F是一个包含东西列表的对象。
这样的映射应该有效(未经测试)
public class Response {
public String etag;
public boolean jobComplete;
public List<F> rows;
}
public class F {
public List<V> f;
}
public Class V {
public String v;
}
您的“行”数组没有结束方括号] 。
它使JSON无效。
仔细阅读错误消息:
org.codehaus.jackson.map.JsonMappingException:无法在[Source:java.io.StringReader@11563ff;来源: START_ARRAY标记中反序列化mypackage.F的实例。 line:1,column:227](通过引用链:mypackage.Response [ “rows” ] - > mypackage.FWrapper [“f”])
现在我看到你修改了JSON - 添加了它。
你还有同样的问题吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.