在Java中解析JSON文件:getJSONObject(int)未定义

在Java中解析JSON文件:getJSONObject(int)未定义,java,arrays,json,Java,Arrays,Json,我正在尝试使用以下方法从JSON文件中获取一些值: JSONParser parser = new JSONParser(); Object obj = parser.parse(new FileReader("C:\\myfile.json")); JSONArray array= new JSONArray(); array.add(obj); 如果我运行:System.out.println(数组),输出为 [{"flowrate":{"mod":0,"value":110},"com

我正在尝试使用以下方法从JSON文件中获取一些值:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\myfile.json"));
JSONArray array= new JSONArray();
array.add(obj); 
如果我运行:
System.out.println(数组),输出为

[{"flowrate":{"mod":0,"value":110},"command":{"cancel":0,"start":0}}] 
,这是我的json文件。 我的问题是如何从特定字段中获取值,比如说
的值“comand”:“cancel”

我尝试了
JSONObject myitem=array.getJSONObject(1.getJSONObject(“取消”)未成功(错误:
getJSONObject(int)未为类型JSONArray定义)


我提到我正在使用json简单工具包。

我也无法验证您的json。我假设您想要创建一个包含两个对象(flowrate和command)的数组,并修复了JSON:

    String value = "[{\"flowrate\":{\"mod\":0,\"value\":110}},{\"command\":{\"cancel\":0,\"start\":0}}]";
    JSONParser parser = new JSONParser();
    Object obj = parser.parse(value);
    JSONArray array=(JSONArray)obj;
    JSONObject jo = (JSONObject) array.get(1);
    System.out.println(jo.get("command"));
这将提供以下输出:

{"cancel":0,"start":0}

Process finished with exit code 0

经过几个小时的搜索,我发现{}和[]之间有很大的差异,因此有不同的方法来解析它们:

就我而言:

JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("C:\\myfile.json"));
JSONObject jsonObject =  (JSONObject) json;
JSONObject command= (JSONObject) jsonObject.get("command");
System.out.println("command: " + command);
long cancel= (Long) command.get("cancel");
System.out.println("cancel: " + cancel);

在这里,您会发现

我尝试验证您正在使用的JSON,但它说它无效。“[“流速”:{“mod”:0,“value”:110},“命令”:{“取消”:0,“开始”:0}]”是myfile.JSON中的JSON吗?你是对的。我的错误是我凭记忆写的。它缺少了{}最终的封装您的示例可以工作,但我仍然不理解为什么同样愚蠢的json在从文件解析时拒绝工作。伙计,这让人沮丧:))