I am trying to iterate through my json file and get required details here is my json
{
\"000\": {
\"component\": \"c\",
\"determinantType\": \"dt\",
There's not a JSONArray
, only a few JSONObjects
. Iterate the keys of the main JSONObject
with JSONObject.keys()
.
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);
}
try this...
FileReader file = new FileReader("test.json");
Object obj = parser.parse(file);
System.out.println(obj);
JSONObject jsonObject = (JSONObject) obj;
Iterator<String> iterator = jsonObject .iterator();
for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(jsonObject.get(key));
}
You don't have an array - you have properties with names of "000" etc. An array would look like this:
"array": [ {
"foo": "bar1",
"baz": "qux1"
}, {
"foo": "bar2",
"baz": "qux2"
}
]
Note the [ ... ]
- that's what indicates a JSON array.
You can iterate through the properties of a JSONObject
using keys():
// 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);
}
Or:
@SuppressWarnings("unchecked")
Iterator<String> keys = (Iterator<String>) jsonObject.keys();
while (keys.hasNext()) {
String key = keys.next();
JSONObject value = jsonObject.getJSONObject(key);
String component = value.getString("component");
System.out.println(component);
}