如何在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)); }