java - 如何拆分 JsonElement
问题描述
所以我想知道如何获得 JsonElement 的单个部分,因为当我运行程序时,每个元素都包含更多信息。例如,它将 JsonArray 中的元素之一打印为[94372,1100000,1389792,31,43]
我怎样才能只检索元素中的第一个数字?
import com.google.gson.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String inline = "";
try{
URL url = new URL("http://api.gw2tp.com/1/bulk/items.json");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
int responsecode = conn.getResponseCode();
if (responsecode!= 200)
throw new RuntimeException("HttpResponseCode: " +responsecode);
else {
Scanner sc = new Scanner(url.openStream());
while (sc.hasNext()){
inline+=sc.nextLine();
}
}
JsonParser parse = new JsonParser();
JsonObject jobj = (JsonObject)parse.parse(inline);
JsonElement updated = jobj.get("updated");
JsonArray jsonarr_1=(JsonArray)jobj.get("items");
JsonArray jsonarr_2=(JsonArray)jobj.get("columns");
System.out.println(jsonarr_2);
for(int i=0;i<jsonarr_1.size();i++) {
System.out.println(jsonarr_1.get(i));
}
}catch (Exception e){
e.printStackTrace();
}
}
}
解决方案
该对象是一个 JSONArray,调用.getAsJsonArray().get(0)
将获得它的第一个条目:
System.out.println(jsonarr_1.get(0).getAsJsonArray().get(0));
输出:
24
System.out.println(jsonarr_1.get(i).getAsJsonArray().get(0));
在您的循环中将输出每个数组的第一个元素。
完整代码:
import com.google.gson.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
String inline = "";
try{
URL url = new URL("http://api.gw2tp.com/1/bulk/items.json");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
int responsecode = conn.getResponseCode();
if (responsecode!= 200)
throw new RuntimeException("HttpResponseCode: " +responsecode);
else {
Scanner sc = new Scanner(url.openStream());
while (sc.hasNext()){
inline+=sc.nextLine();
}
}
JsonParser parse = new JsonParser();
JsonObject jobj = (JsonObject)parse.parse(inline);
JsonElement updated = jobj.get("updated");
JsonArray jsonarr_1=(JsonArray)jobj.get("items");
JsonArray jsonarr_2=(JsonArray)jobj.get("columns");
System.out.println(jsonarr_2);
for(int i=0;i<jsonarr_1.size();i++) {
System.out.println(jsonarr_1.get(i).getAsJsonArray().get(0));
}
}catch (Exception e){
e.printStackTrace();
}
}
}
推荐阅读
- css - 弹出覆盖的标题位置问题
- html - CSS calc() 不适用于 Office 365
- python - 使用 Flask 创建一个在 webapp 上切换语言的 GET 请求
- regex - 正则表达式可选子字符串
- django - Django ManytoManyField 添加功能不起作用
- asp.net-core - Teamcity 混合 .Net Core + .Net 框架解决方案
- mysql - 日期时间的 SQL 请求
- jquery - 限制 Jquery 表过滤器
- python - 在 Python 中从大型二进制文件中读取特定数据块的最快方法是什么
- c# - 创建具有动态类型的通用对象