Подтвердить что ты не робот

Итерация через 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

4b9b3361

Ответ 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);
  }
}