我正在使用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
: 无法将START_ARRAY令牌反序列化为mypackage.F的实例 at [Source: java.io.StringReader@11563ff; line: 1, column: 227] (through reference chain: mypackage.Response["rows"]->mypackage.FWrapper["f"])
我查看了几个类似错误的旧问题,但仍然无法解决我的问题。这个
看起来与我的情况非常相似,因为正确的响应说道: 你的数据存在问题,因为你在数组中有内部包装对象
,我认为我的数据也是这种情况。但我仍然没有能够进行正确的POJO映射。任何提示将不胜感激。
编辑:更正了一个打字错误(我使用的Json是有效的)
Response
实例,让Jackson序列化它。看看它在结构上与您获得的JSON输入有何不同。这应该可以解释具体的问题。 - StaxMan