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

时间:2018-04-22 15:16:59

标签: 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(array);,则输出为

[{"flowrate":{"mod":0,"value":110},"command":{"cancel":0,"start":0}}] 

,这是我的json文件。 我的问题是如何从特定字段获取价值,让我们说出"comand":"cancel"的价值。

我已尝试JSONObject myitem = array.getJSONObject(1).getJSONObject("cancel");但没有成功(错误:getJSONObject(int) is undefined for the type JSONArray)。

我提到我正在使用json-simple工具包。

2 个答案:

答案 0 :(得分:1)

我也无法验证您的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

答案 1 :(得分:0)

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

enter image description here

就我而言:

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);

在这里,您可以找到best example for nested json objects