在Java中解析JSON文件:getJSONObject(int)未定义
我正在尝试使用以下方法从JSON文件中获取一些值:在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
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在从文件解析时拒绝工作。伙计,这让人沮丧:))