访问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