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 如何使用GSON在JSON数组中获取值_Java_Json_Gson - Fatal编程技术网

Java 如何使用GSON在JSON数组中获取值

Java 如何使用GSON在JSON数组中获取值,java,json,gson,Java,Json,Gson,我想知道JSON数组中的select值 我的JSON是 { "meta": { "is_end": true, "total_count": 1, "pageable_count": 1 }, "documents": [ { "road_address": { "undergroun_yn": "N", "road_name": "충대로", "underground_yn": "N",

我想知道JSON数组中的select值

我的JSON是

{
  "meta": {
    "is_end": true,
    "total_count": 1,
    "pageable_count": 1
  },
  "documents": [
    {
      "road_address": {
        "undergroun_yn": "N",
        "road_name": "충대로",
        "underground_yn": "N",
        "region_2depth_name": "청주시 서원구",
        "zone_no": "28644",
        "sub_building_no": "",
        "region_3depth_name": "개신동",
        "main_building_no": "1",
        "address_name": "충북 청주시 서원구 충대로 1",
        "y": "36.63003935314667",
        "x": "127.45479196889647",
        "region_1depth_name": "충북",
        "building_name": "충북대학교"
      },
      "address_name": "충북 청주시 서원구 충대로 1",
      "address": {
        "b_code": "4311210900",
        "region_3depth_h_name": "성화.개신.죽림동",
        "main_address_no": "12",
        "h_code": "4311259000",
        "region_2depth_name": "청주시 서원구",
        "main_adderss_no": "12",
        "sub_address_no": "",
        "region_3depth_name": "개신동",
        "address_name": "충북 청주시 서원구 개신동 12",
        "y": "36.6284039605616",
        "x": "127.45921419389084",
        "mountain_yn": "N",
        "zip_code": "361763",
        "region_1depth_name": "충북",
        "sub_adderss_no": ""
      },
      "y": "36.63003935314667",
      "x": "127.45479196889647",
      "address_type": "ROAD_ADDR"
    }
  ]
}
但是,出现以下代码错误:“java.lang.IllegalStateException:不是JSON对象” 所以,我试着去解决它们,并寻找很多方法。 我不使用“meta”的一部分,只使用JSON中的“documents”。 然后,我编写了java代码。 我的原始代码是

JsonElement jsonElement = parser.parse(html.toString()).getAsJsonObject();
JsonObject rootObj = jsonElement.getAsJsonObject();


        JsonObject element = rootObj.get("documents").getAsJsonObject();
        String y = element.getAsJsonObject().get("x").toString();
        String x = element.getAsJsonObject().get("y").toString();

        System.out.println(y);
        System.out.println(x);
        System.out.println(html.toString());
        return html.toString();
我知道“文档”是JSON数组,所以我修改了我的代码。 我修改的java代码是

    JsonElement jsonElement = parser.parse(html.toString()).getAsJsonObject();
    JsonObject rootObj = jsonElement.getAsJsonObject();
    String y = rootObj.getAsJsonArray().get(Integer.parseInt("x")).toString();
    String x = rootObj.getAsJsonArray().get(Integer.parseInt("y")).toString();

        System.out.println(y);
        System.out.println(x);
        System.out.println(html.toString());
        return html.toString();
但也出现了错误,即“java.lang.IllegalStateException:不是JSON数组”” 我想得到这样的结果

{
"documents": [
        {
          "road_address": {
            "undergroun_yn": "N",
            "road_name": "충대로",
            "underground_yn": "N",
            "region_2depth_name": "청주시 서원구",
            "zone_no": "28644",
            "sub_building_no": "",
            "region_3depth_name": "개신동",
            "main_building_no": "1",
            "address_name": "충북 청주시 서원구 충대로 1",
            "y": "36.63003935314667",
            "x": "127.45479196889647",
            "region_1depth_name": "충북",
            "building_name": "충북대학교"
          },
          "address_name": "충북 청주시 서원구 충대로 1",
          "address": {
            "b_code": "4311210900",
            "region_3depth_h_name": "성화.개신.죽림동",
            "main_address_no": "12",
            "h_code": "4311259000",
            "region_2depth_name": "청주시 서원구",
            "main_adderss_no": "12",
            "sub_address_no": "",
            "region_3depth_name": "개신동",
            "address_name": "충북 청주시 서원구 개신동 12",
            "y": "36.6284039605616",
            "x": "127.45921419389084",
            "mountain_yn": "N",
            "zip_code": "361763",
            "region_1depth_name": "충북",
            "sub_adderss_no": ""
          },
          "y": "36.63003935314667",
          "x": "127.45479196889647",
          "address_type": "ROAD_ADDR"
        }
      ]
    }
}
然后得到键“x”,“y”和那些值 但是,错误不断发生。
如何解决这些问题

您应该遍历JSONArray以找到JSONObject,然后读取x和y值

JsonElement jsonElement = parser.parse(html.toString()).getAsJsonObject();
JsonObject rootObj = jsonElement.getAsJsonObject();
JsonArray documents = (JsonArray) rootObj.get("documents");
Iterator < JsonElement > itr = documents.iterator();
while (itr.hasNext()) {
 JsonObject jsonObject = (JsonObject) itr.next();
 double x = jsonObject.getDouble("x");
 double y = jsonObject.getDouble("y");
}
JsonElement JsonElement=parser.parse(html.toString()).getAsJsonObject();
JsonObject rootObj=jsonElement.getAsJsonObject();
JsonArray文档=(JsonArray)rootObj.get(“文档”);
迭代器itr=documents.Iterator();
while(itr.hasNext()){
JsonObject JsonObject=(JsonObject)itr.next();
double x=jsonObject.getDouble(“x”);
double y=jsonObject.getDouble(“y”);
}

您应该遍历JSONArray以找到JSONObject,然后读取x和y值

JsonElement jsonElement = parser.parse(html.toString()).getAsJsonObject();
JsonObject rootObj = jsonElement.getAsJsonObject();
JsonArray documents = (JsonArray) rootObj.get("documents");
Iterator < JsonElement > itr = documents.iterator();
while (itr.hasNext()) {
 JsonObject jsonObject = (JsonObject) itr.next();
 double x = jsonObject.getDouble("x");
 double y = jsonObject.getDouble("y");
}
JsonElement JsonElement=parser.parse(html.toString()).getAsJsonObject();
JsonObject rootObj=jsonElement.getAsJsonObject();
JsonArray文档=(JsonArray)rootObj.get(“文档”);
迭代器itr=documents.Iterator();
while(itr.hasNext()){
JsonObject JsonObject=(JsonObject)itr.next();
double x=jsonObject.getDouble(“x”);
double y=jsonObject.getDouble(“y”);
}

谢谢!我解决他们!!但是,只需修改代码即可。JsonElement=parser.parse(html.toString()).getAsJsonObject();JsonObject rootObj=jsonElement.getAsJsonObject();JsonArray文档=(JsonArray)rootObj.get(“文档”);迭代器itr=documents.Iterator();而(itr.hasNext()){JsonObject JsonObject=(JsonObject)itr.next();JsonElement x=JsonObject.get(“x”);JsonElement y=JsonObject.get(“y”);}谢谢!我解决他们!!但是,只需修改代码即可。JsonElement=parser.parse(html.toString()).getAsJsonObject();JsonObject rootObj=jsonElement.getAsJsonObject();JsonArray文档=(JsonArray)rootObj.get(“文档”);迭代器itr=documents.Iterator();而(itr.hasNext()){JsonObject JsonObject=(JsonObject)itr.next();JsonElement x=JsonObject.get(“x”);JsonElement y=JsonObject.get(“y”);}