- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 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
: Can not deserialize instance of mypackage.F out of START_ARRAY token at [Source: java.io.StringReader@11563ff; line: 1, column: 227] (through reference chain: mypackage.Response["rows"]->mypackage.FWrapper["f"])
我检查了几个有类似错误的旧问题,但还无法解决我的问题。 This一个看起来与我的非常相似,因为正确的响应是 Your data is problemed 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;
}
关于java - 无法将 JSON 反序列化为 POJO(使用 Jackson),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14511262/
出于好奇,我尝试了一些原型(prototype)制作,但似乎只允许在第一个位置使用子例程的原型(prototype) &。 当我写作时 sub test (&$$) { do_somethin
我需要开发一个类似于 Android Play 商店应用程序或类似 this app 的应用程序.我阅读了很多教程,发现几乎每个教程都有与 this one 类似的例子。 . 我已经开始使用我的应用程
考虑一个表示“事件之间的时间”的列: (5, 40, 3, 6, 0, 9, 0, 4, 5, 18, 2, 4, 3, 2) 我想将这些分组到 30 个桶中,但桶会重置。期望的结果: (0, 1,
我是一名优秀的程序员,十分优秀!