访问JSON数组(JAVA)的2维

我有这样的代码:访问JSON数组(JAVA)的2维

String sURL = "https://example.com/json"; //just a string 

// Connect to the URL using java's native library

URL url = new URL(sURL);

HttpURLConnection request = (HttpURLConnection) url.openConnection();

request.connect();

// Convert to a JSON object to print data

JsonParser jp = new JsonParser(); //from gson

JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); //Convert the input stream to a json element

JsonObject rootobj = root.getAsJsonObject(); //May be an array, may be an object.

String names = rootobj.get("names").getAsString();

System.out.println(names);

我如何可以访问该阵列的第二级在倒数第二行? “名称”是第一个工作正常的维度。
在PHP中的解决方案将是

$var = json[...][...] //for accessing the second dimension. 

这是如何在Java中做了什么?像rootobj.get(“名称/姓氏”)不起作用。

回答:

根据你的代码,我假设你使用GSON进行JSON处理。如果你的JSON元素是一个数组,你可以简单地使用get(index)来访问它的元素。草绘在这里:

//Not taking care of possible null values here 

JsonObject rootobj = ...

JsonElement elem = rootobj.get("names");

if (elem.isJsonArray()) {

JsonArray elemArray = elem.getAsJsonArray();

JsonElement innerElem = elemArray.get(0);

if (innerElem.isJsonArray()) {

JsonArray innerArray = innerElem.getAsJsonArray();

//Now you can access the elements using get(..)

//E.g. innerArray.get(2);

}

}

当然这不是很好看。您还可以查看JsonPath,它简化了浏览到JSON文档中的特定部分。

更新: 在您提到的文档中,您想要精确地提取哪个值?数组元素的id值(根据您的评论之一)?这可能是这样做的this这里举例:

JsonElement root = jp.parse.... 

JsonArray rootArray = root.getAsJsonArray(); //Without check whether it is really an array

//By the following you would extract the id 6104546

//Access an other array position if you want the second etc. element

System.out.println(rootArray.get(0).getAsJsonObject().get("id"));

否则请你想要什么更详细的解释(你贴不与JSON例子匹配你的代码参考)。

回答:

在你的Github链接中,你的根元素是一个数组,而不是一个对象。 (而且也没有names属性)

所以你需要

root.getAsJsonArray(); 

那么你会遍历数组的长度,并使用get(i),访问特定对象。

从该对象,请使用其他方法获取访问它的一个属性

以上是 访问JSON数组(JAVA)的2维 的全部内容, 来源链接: utcz.com/qa/258299.html

回到顶部