在其他对象内的对象内反序列化json数组

时间:2012-05-05 18:43:19

标签: java json jackson

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

我确信这会奏效,但对我来说似乎有些混乱。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

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

所以我可以改变我的代码:

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

一切都很出色。