programing

Java loop over Json 어레이?

powerit 2023. 3. 19. 19:32
반응형

Java loop over Json 어레이?

다음 사항을 반복하려고 합니다.JSON

{
    "dataArray": [{
        "A": "a",
        "B": "b",
        "C": "c"
    }, {
        "A": "a1",
        "B": "b2",
        "C": "c3"
    }]
}

지금까지 알아낸 정보:

JSONObject jsonObj = new JSONObject(json.get("msg").toString());

for (int i = 0; i < jsonObj.length(); i++) {
    JSONObject c = jsonObj.getJSONObject("dataArray");

    String A = c.getString("A");
    String B = c.getString("B");
    String C = c.getString("C");

}

좋은 생각 있어요?

당신의 코드에서 요소는dataArray는 JSON 오브젝트의 배열이며 JSON 오브젝트 자체가 아닙니다.요소A,B,그리고.CJSON 객체의 일부입니다.dataArrayJSON 어레이

어레이를 반복해야 합니다.

public static void main(String[] args) throws Exception {
    String jsonStr = "{         \"dataArray\": [{              \"A\": \"a\",                \"B\": \"b\",               \"C\": \"c\"            }, {                \"A\": \"a1\",              \"B\": \"b2\",              \"C\": \"c3\"           }]      }";

    JSONObject jsonObj = new JSONObject(jsonStr);

    JSONArray c = jsonObj.getJSONArray("dataArray");
    for (int i = 0 ; i < c.length(); i++) {
        JSONObject obj = c.getJSONObject(i);
        String A = obj.getString("A");
        String B = obj.getString("B");
        String C = obj.getString("C");
        System.out.println(A + " " + B + " " + C);
    }
}

인쇄하다

a b c
a1 b2 c3

어딘지 몰라.msg코드 스니펫에서 나오고 있습니다.

Java Docs to rescue:

대신 http://www.json.org/javadoc/org/json/JSONObject.html#getJSONArray(java.lang.String)을 사용할 수 있습니다.

JSONArray dataArray= sync_reponse.getJSONArray("dataArray");

for(int n = 0; n < dataArray.length(); n++)
{
    JSONObject object = dataArray.getJSONObject(n);
    // do some stuff....
}

인덱싱 없이 수행할 수 있는 방법은 다음과 같습니다.

JsonArray jsonArray;
Iterator<JsonElement> it = jsonArray.iterator();
while(it.hasNext()){
    System.out.println(it.next());
}

를 들어 io.vertx.core.json을 사용하는 경우.JsonArray를 개체에서 변환해야 합니다.

JsonArray jsonArray;
Iterator<Object> it = jsonArray.iterator();
while(it.hasNext()){
    JsonObject jobj = (JsonObject) it.next();
    System.out.println(jobj);
}

언급URL : https://stackoverflow.com/questions/19018509/java-loop-over-json-array

반응형