用Java读取JSON多维数组

时间:2014-03-03 01:45:08

标签: java json

我有一个问题我无法找到解决方案,因为它不是很直接我猜...

在我的Java程序中,我收到一个这样的字符串(来自现有的源代码,我无法改变它,遗憾的是):

["a", 1, "b", 2, ["c", "d", 3], 4]

此字符串是有效的JSON数组(没有对象,因此没有键/值对!)。数组的内容可以是完全随机的(例如,空的),但也可以是多维的。

我需要找到一种在Java中阅读它的方法。例如,input.get(4).get(2)应该在上面的例子中给我3。我并不关心是否所有内容都被转换为字符串,但我需要找到一种通过索引来获取数据的方法。数据也可能是多个字符,但我的示例仅显示每个元素1个。

我如何做到这一点?提前谢谢!

编辑;我知道我期望在根数组中有多少元素,但有几十个案例,所以我真的不想为每个案例编写不同的东西

2 个答案:

答案 0 :(得分:4)

选择一个JSON库。 他们的任何

基本org.json

JSONArray array = new JSONArray(yourString); 
JSONArray arrayTwo = array.getJSONArray(4); 
int i = arrayTwo.getInt(2);

GSON:

JsonElement element = new JsonParser().parse(json);
JsonArray array = element.getAsJsonArray();
JsonArray arrayTwo = array.get(4).getAsJsonArray();
int i = arrayTwo.get(2).getAsInt();

Etc等。

答案 1 :(得分:1)

使用jackson 2.3.0:

import com.fasterxml.jackson.databind.*;

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree("[\"a\", 1, \"b\", 2, [\"c\", \"d\", 3], 4]");
int i = node.path(4).path(2).intValue();
System.out.println(i);

打印

3

JsonNode的Javadoc是here