我正在使用org.json.simple
解析Java中的JSON文件。我有一个看起来像这样的JSONfile:
{
"cells": [
{
"key" : "val1"
},
{
"key" : "val2"
},
{
"key" : "val3"
}
]
}
如果它存储在名为path
的文件中,而我这样提取cells
:
Reader reader = new FileReader("path");
JSONObject obj = (JSONObject)new JSONParser().parse(reader);
JSONArray cells = (JSONArray) obj.get("cells");
我是否可以假定JSONArray cells
中的元素以与文件中相同的顺序存储(即cells
中的第一个元素包含值val1
,第二个元素包含val2
,最后一个元素包含val3
)?
答案 0 :(得分:3)
由于JSONArray是“值的有序序列”(可以在docs中看到),因此可以假定数组元素的顺序与从实际JSON文件读取的顺序相同。因此,只要您的JSON文件没有更改,读取数组就不会更改。
但是,如果可能的话,我建议不要使您的代码依赖于文件定义的排序。我认为这是不好的做法。
如果确实需要定义排序,则可以使用JSON文件中使用的键在代码中定义所需的排序。例如,定义一个数组['key3', 'key2', 'key1']
并通过搜索这些键并创建一个新列表从读取的JSONArray中提取值。
答案 1 :(得分:0)
虽然您的答案是正确的(如果命令您指的是错误的文档),因为作者询问了org.json.simple中存在的JSONArray而不是org.json中存在的JSONArray