programing

JSON 오브젝트 내의 JSON 어레이 해석

closeapi 2023. 3. 2. 22:15
반응형

JSON 오브젝트 내의 JSON 어레이 해석

다음과 같은 구조의 JSON이 있습니다.

{"source":[
           {"name":"john","age":20},
           {"name":"michael","age":25},
           {"name":"sara", "age":23}
         ]
}

이 JSON 문자열의 이름은mainJSON. 다음 Java 코드를 사용하여 "name" 및 "age" 요소에 액세스하려고 합니다.

JSONArray jsonMainArr = new JSONArray(mainJSON.getJSONArray("source"));
for (int i = 0; i < jsonMainArr.length(); i++) {  // **line 2**
     JSONObject childJSONObject = jsonMainArr.getJSONObject(i);
     String name = childJSONObject.getString("name");
     int age     = childJSONObject.getInt("age");
}

2번째 줄에 대해 다음과 같은 예외가 표시됩니다.

org.json.JSONException: JSONArray initial value should be a string or collection or array.

어디서 실수를 했는지, 어떻게 바로잡아야 하는지 안내 부탁드립니다.

mainJSON.getJSONArray("source")a를 반환하다JSONArray를 삭제할 수 있습니다.new JSONArray.

개체 매개 변수가 있는 JSONArray 컨스트럭터는 수집 또는 배열(JSONArray가 아님)이어야 합니다.

이것을 시험해 보세요.

JSONArray jsonMainArr = mainJSON.getJSONArray("source"); 

코드는 문제 없습니다.다음 행을 바꿉니다.

JSONArray jsonMainArr = new JSONArray(mainJSON.getJSONArray("source"));

다음 행과 함께:

JSONArray jsonMainArr = mainJSON.getJSONArray("source");

행 2는 다음과 같아야 합니다.

for (int i = 0; i < jsonMainArr.size(); i++) {  // **line 2**

3호선은 제가 해야 할 일이거든요.

    JSONObject childJSONObject = (JSONObject) new JSONParser().parse(jsonMainArr.get(i).toString());
private static String readAll(Reader rd) throws IOException {
    StringBuilder sb = new StringBuilder();
    int cp;
    while ((cp = rd.read()) != -1) {
      sb.append((char) cp);
    }
    return sb.toString();
  }

 String jsonText = readAll(inputofyourjsonstream);
 JSONObject json = new JSONObject(jsonText);
 JSONArray arr = json.getJSONArray("sources");

arr은 다음과 같습니다.[ { " id " : 1001, " name " : jhon } , { " id " : 1002, " name " : jhon } ]사용할 수 있습니다.

arr.getJSONObject(index)

개체를 배열 안으로 가져옵니다.

이 질문에 대한 답변이 될 수 있습니다.

JSONArray msg1 = (JSONArray) json.get("source");
for(int i = 0; i < msg1.length(); i++){
  String name = msg1.getString("name");
  int age     = msg1.getInt("age");
}

언급URL : https://stackoverflow.com/questions/5650171/parsing-json-array-within-json-object

반응형