首页 > 解决方案 > 如何拆分 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();
            }
        }
    }

标签: javajsongson

解决方案


该对象是一个 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();
        }
    }
}

推荐阅读