Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中读取JSON多维数组_Java_Json - Fatal编程技术网

在Java中读取JSON多维数组

在Java中读取JSON多维数组,java,json,Java,Json,我有一个问题我还没能找到解决办法,因为我想这不是很直截了当 在我的Java程序中,我收到这样一个字符串(从现有的源代码中,很遗憾,我无法更改它): [“a”,1,“b”,2,[“c”,“d”,3],4] 这个字符串是一个有效的JSON数组(没有对象,所以没有键/值对!)。数组的内容可以是完全随机的(例如,空),但也可以是多维的 我需要找到一种用Java阅读的方法。例如,在上面的示例中,input.get(4).get(2)应该给我3。我真的不在乎是否所有东西都被转换成字符串,但我需要找到一种通过

我有一个问题我还没能找到解决办法,因为我想这不是很直截了当

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

[“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();