Java 希望使用JSONObject读取JSONArray,但在获取非空JSON指针时出错

Java 希望使用JSONObject读取JSONArray,但在获取非空JSON指针时出错,java,json,Java,Json,我的Json文件是一个数组 [ ] 所以我想从坐标中得到值。为此,我尝试了以下方法: JsonReader jsonReader = Json .createReader(new FileReader(getClass().getResource("country-flags.json").getPath())); JsonArray arr = jsonReader.readArray(); for(int i = 1;

我的Json文件是一个数组

[

]

所以我想从坐标中得到值。为此,我尝试了以下方法:

    JsonReader jsonReader = Json
                .createReader(new FileReader(getClass().getResource("country-flags.json").getPath()));
        JsonArray arr = jsonReader.readArray();

        for(int i = 1; i<arr.size();i++)
        {
             JsonObject obj = arr.getJsonObject(i);
             System.out.println("coordinates: " + obj.containsKey("\"coordinates\""));

             System.out.println("##########");
             System.out.println(obj.getValue("\"coordinates\""));


        }
但我得到了一个错误:

javax.json.JsonException:非空json指针必须以 “/”

有人能帮我吗

代码obj.containsKey\coordinates\将返回false,因为坐标不是顶级键,而是第二级嵌套键。如果打印obj.keySet,则只会获得[datasetid、recordid、fields、geometry、record\u timestamp]第一级/顶级密钥

如果JSON的结构是固定的,则可以使用以下代码:

for(int i = 1; i<arr.size();i++)
{
     JsonObject obj = arr.getJsonObject(i);
     JsonObject jsonChildObject = obj.getJsonObject("geometry");
     if(jsonChildObject.containsKey("coordinates"))
          System.out.println(jsonChildObject.getValue("/coordinates"));
}

请注意getValue方法的坐标参数前面的/。我想这就是你来这里的原因。

你希望obj.getValue\coordinates\做什么?你能解释一下为什么我在这里领先吗/?!前导/是javadocs中指定的语法。您还可以查看这两篇文章,它们更好地解释了JSONPointer。1 2希望这有帮助!
for(int i = 1; i<arr.size();i++)
{
     JsonObject obj = arr.getJsonObject(i);
     JsonObject jsonChildObject = obj.getJsonObject("geometry");
     if(jsonChildObject.containsKey("coordinates"))
          System.out.println(jsonChildObject.getValue("/coordinates"));
}