Итерация через JSONObject от root в json simple
Я пытаюсь перебрать объект json с помощью json simple. Я видел ответы, где вы можете сделать getJSONObject ( "child" ) из
{ "child": { "something": "value", "something2": "value" } }
но что, если у меня есть что-то
{
"k1":"v1",
"k2":"v2",
"k3":"v3"
}
и хотите перебрать этот объект json. Это:
Iterator iter = jObj.keys();
броски:
Не могу найти символ
символ: ключи метода()
location: class org.json.simple.JSONObject
Ответы
Ответ 1
Предполагая, что ваш объект JSON сохраняется в файле "simple.json", вы можете перебирать пары атрибут-значение следующим образом:
JSONParser parser = new JSONParser();
Object obj = parser.parse(new FileReader("simple.json"));
JSONObject jsonObject = (JSONObject) obj;
for(Iterator iterator = jsonObject.keySet().iterator(); iterator.hasNext();) {
String key = (String) iterator.next();
System.out.println(jsonObject.get(key));
}
Ответ 2
Вы можете сделать это
String jsonstring = "{ \"child\": { \"something\": \"value\", \"something2\": \"value\" } }";
JSONObject resobj = new JSONObject(jsonstring);
Iterator<?> keys = resobj.keys().iterator();
while(keys.hasNext() ) {
String key = (String)keys.next();
if ( resobj.get(key) instanceof JSONObject ) {
JSONObject xx = new JSONObject(resobj.get(key).toString());
Log.d("res1",xx.getString("something"));
Log.d("res2",xx.getString("something2"));
}
}
Ответ 3
В Java 8 мы можем использовать лямбды
void handleJSONObject(JSONObject jsonObject) {
jsonObject.keys().forEachRemaining(key -> {
Object value = jsonObject.get(key);
logger.info("Key: {0}\tValue: {1}", key, value);
}
}