在Java中读取JSON多维数组
我有一个问题我还没能找到解决办法,因为我想这不是很直截了当 在我的Java程序中,我收到这样一个字符串(从现有的源代码中,很遗憾,我无法更改它):在Java中读取JSON多维数组,java,json,Java,Json,我有一个问题我还没能找到解决办法,因为我想这不是很直截了当 在我的Java程序中,我收到这样一个字符串(从现有的源代码中,很遗憾,我无法更改它): [“a”,1,“b”,2,[“c”,“d”,3],4] 这个字符串是一个有效的JSON数组(没有对象,所以没有键/值对!)。数组的内容可以是完全随机的(例如,空),但也可以是多维的 我需要找到一种用Java阅读的方法。例如,在上面的示例中,input.get(4).get(2)应该给我3。我真的不在乎是否所有东西都被转换成字符串,但我需要找到一种通过
[“a”,1,“b”,2,[“c”,“d”,3],4]
这个字符串是一个有效的JSON数组(没有对象,所以没有键/值对!)。数组的内容可以是完全随机的(例如,空),但也可以是多维的
我需要找到一种用Java阅读的方法。例如,在上面的示例中,input.get(4).get(2)
应该给我3
。我真的不在乎是否所有东西都被转换成字符串,但我需要找到一种通过索引访问数据的方法。数据也可以是多个字符,尽管我的示例显示每个元素只有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是。选择一个JSON库。他们中的任何一个
基本的org.json
:
JSONArray array = new JSONArray(yourString);
JSONArray arrayTwo = array.getJSONArray(4);
int i = arrayTwo.getInt(2);
格森:
等等等等。你能不能不使用?@univerio问题是这个JSON数组是完全随机的,所以我认为这行不通,我试过了,但还没有成功。。如果你能告诉我怎么做,那就太好了@univerio我做了很多尝试,我自己也尝试过解析它,但在继续之前,我陷入了递归,并确保每个“内部”数组都关闭,我尝试使用几个JSON库,但它们依赖于JSON数组的静态结构,或者JSON数组只包含相同的类型(例如,不是字符串、整数和混合数组)。。如果你知道什么,请帮助..任何可用的JSON解析库(唯一的例外是可怕的简单JSON东西)都会解析这个JSON,并为你提供Java对象数组。Java有十几个JSON工具包。关于其中的一半,请参见json.org。我发现我从未在这里选择过答案。感谢您在2014年抽出时间向我解释图书馆的概念。
JsonElement element = new JsonParser().parse(json);
JsonArray array = element.getAsJsonArray();
JsonArray arrayTwo = array.get(4).getAsJsonArray();
int i = arrayTwo.get(2).getAsInt();