반응형
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
반응형
'programing' 카테고리의 다른 글
알려진 필드와 알 수 없는 필드로 json 직렬화 해제 (0) | 2023.03.02 |
---|---|
Oracle: 테이블이 존재하는 경우 (0) | 2023.03.02 |
Oracle에서 사용자에게 DBA 권한 부여 (0) | 2023.03.02 |
Chrome은 뒤로 버튼을 누르면 Ajax 응답을 표시합니다. (0) | 2023.03.02 |
JSON 프로토콜을 사용하여 버전 관리를 처리하는 가장 좋은 방법은 무엇입니까? (0) | 2023.02.25 |