0

可能有点类似于这个: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.
}

我确信这会起作用,但对我来说似乎有点混乱。有没有更好的办法?

4

1 回答 1

0

哦,哎呀。看起来 ObjectMapper 的第一次运行为我做了一切。

所以我可以像这样更改我的代码:

ArrayList<Map> z = (ArrayList) it.next().get("z");
for (Map m : z) {
    // Run mapper on o.
    doSomethingWith(m.get("stuff");
}

一切都很好。

于 2012-05-07T12:15:15.297 回答