Java 希望使用JSONObject读取JSONArray,但在获取非空JSON指针时出错
我的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;
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"));
}