我试图使用以下方法从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工具包。
答案 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)
经过几个小时的搜索,我发现{}和[]之间存在很大差异,因此需要用不同的方法来解析它们:
就我而言:
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