如何在java中迭代json对象

我试图遍历我的json文件并获取所需的详细信息,这是我的json

{ "000": { "component": "c", "determinantType": "dt", "determinant": "d", "header": "h", "determinantvalue": "null" }, "001": { "component": "t", "determinantType": "i", "determinant":"ld", "header": "D", "determinantvalue": "null" }, "002": { "component": "x", "determinantType": "id", "determinant": "pld", "header": "P", "determinantValue": "null" }} 

我的java代码

 FileReader file = new FileReader("test.json"); Object obj = parser.parse(file); System.out.println(obj); JSONObject jsonObject = (JSONObject) obj; JSONArray msg = (JSONArray) jsonObject.get(key); Iterator iterator = msg.iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); String component = (String) jsonObject.get("component"); System.out.println("component: " + component); 

正如您在代码中看到的那样,我导入了我的json文件,并尝试从中获取下一个元素和打印组件,我还应该打印标题,行列式和行列式值以及谢谢

你没有数组 – 你有名称为“000”的属性等。数组看起来像这样:

 "array": [ { "foo": "bar1", "baz": "qux1" }, { "foo": "bar2", "baz": "qux2" } ] 

注意[ ... ] – 这表示一个JSON数组。

您可以使用keys()遍历JSONObject的属性:

 // Unfortunately keys() just returns a raw Iterator... Iterator keys = jsonObject.keys(); while (keys.hasNext()) { Object key = keys.next(); JSONObject value = jsonObject.getJSONObject((String) key); String component = value.getString("component"); System.out.println(component); } 

要么:

 @SuppressWarnings("unchecked") Iterator keys = (Iterator) jsonObject.keys(); while (keys.hasNext()) { String key = keys.next(); JSONObject value = jsonObject.getJSONObject(key); String component = value.getString("component"); System.out.println(component); } 

没有JSONArray ,只有少数JSONObjects 。 使用JSONObject.keys()迭代主JSONObject的键。

 public static final String COMPONENT = "component"; public static final String DT = "determinantType"; public static final String D = "determinant": "d"; public static final String HEADER = "header"; public static final String DV = "determinantvalue"; JSONObject jso = getItFromSomewhere(); for (Object key : jso.keys()) { JSONObject subset = jso.getJSONObject(key); String d = subset.getString(D); String header = subset.getString(HEADER); String dv = subset.getString(DV); System.out.println(key + " " + header + " " + d + " " + dv); } 

试试这个…

 FileReader file = new FileReader("test.json"); Object obj = parser.parse(file); System.out.println(obj); JSONObject jsonObject = (JSONObject) obj; Iterator iterator = jsonObject .iterator(); for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) { String key = (String) iterator.next(); System.out.println(jsonObject.get(key)); }