可能有点类似于这个:deserializing json with arrays,我也在关注这个:Jackson multiple objects and huge json files
我拥有的 json 非常大,所以简化后是这样的:
{ "foo"="bar", "x"="y", "z"=[{"stuff"="stuff"}, {"more"="stuff"}, ...], ... }
我的代码如下所示:
for (Iterator<Map> it = new ObjectMapper().readValues(new JsonFactory().createJsonParser(in), Map.class); it.hasNext();) {
doSomethingWith(it.next());
}
这在迭代文件中的对象时效果很好,我可以从我所在的对象中获得我喜欢的任何值。效果很好,但数组只是作为对象的 ArrayList 返回。所以我必须做类似的事情:
ArrayList z = (ArrayList) it.next().get("z");
for (Object o : z) {
// Run mapper on o.
// Do stuff.
}
我确信这会起作用,但对我来说似乎有点混乱。有没有更好的办法?