나는 HTTP GET을 통해 서버에서 데이터를 가져 와서 응답 (JSON 형식)을 String에 저장하는 안드로이드 애플리케이션을 개발 중이다. String을 파싱하고 JSONArray 내에서 값을 가져 오려고합니다. 문자열에 저장되어 ERROR JSONArray 안의 JSONObject 구문 분석하기 안드로이드
수신 된 JSON은 다음과 같습니다{
"code": 1,
"data": {
"moodGraphData": {
"myself": {
"1": {
"id": "999999999",
"value": "4.3",
"name": "Myself",
"owner": "",
"type": 1,
"children": []
}
},
"my_teams": [],
"my_units": [],
"companies": [
{
"id": "4",
"name": "Testing",
"owner": "Ankur Ankur",
"value": "3.4",
"type": "4",
"children": {
"0": {
"id": "10",
"value": 3.8,
"name": "Mun tiimi",
"owner": "",
"type": 5,
"children": [],
"count": 1
},
"4": {
"id": "31",
"value": 3.05,
"name": "gmail.com",
"owner": "",
"type": 5,
"children": [
{
"id": "27",
"value": 2.3,
"name": "Priidu Team2",
"owner": " ",
"type": 5,
"children": [],
"count": 1
}
],
"count": 2
},
"6": {
"id": "50",
"value": 2.95,
"name": "gmail.com",
"owner": "",
"type": 5,
"children": [
{
"id": "51",
"value": 2.6,
"name": "Testing",
"owner": "Ujjwal Mairh",
"type": 5,
"children": [],
"count": 1
}
],
"count": 2
}
}
}
]
},
"companyTopStatements": [
{
"id": "1",
"text": "I am happy at work today",
"key": "Mood",
"answer": "3.5"
},
{
"id": "8",
"text": "I am using my strengths at work",
"key": "Strengths",
"answer": "3.5"
},
{
"id": "11",
"text": "My opinions matter and I can influence in my work",
"key": "Influence",
"answer": "3.5"
}
],
"companyBottomStatements": [
{
"id": "13",
"text": "I am surrounded by teammates who are motivated and doing great things",
"key": "Team",
"answer": "3.2"
},
{
"id": "14",
"text": "I have a close friends at work",
"key": "Friendship",
"answer": "3.2"
},
{
"id": "15",
"text": "I receive frequent feedback in order to progress in my role",
"key": "Feedback",
"answer": "3.2"
}
]
},
"errors": null
}
내가 JSON 배열 "companyTopStatements"을 분석하고, 내부에있는 "키"의 값을 검색 할 JSONObject.
다음과 같이 내가 사용하는 코드입니다 : 나는 그것을 구문 분석 할 수 없습니다입니다
JSONObject jsonObj = new JSONObject(Get_MyCompany_JSON);
JSONArray jsonArray = jsonObj.getJSONArray("companyTopStatements");
for(int i=0;i<jsonArray.length();i++)
{
JSONObject curr = jsonArray.getJSONObject(i);
String keyValue = curr.getString("key");
Log.d("Key",keyValue);
}
을 예외 획득 :
04-08 21:25:03.561: W/System.err(13464): org.json.JSONException: No value for companyTopStatements
04-08 21:25:03.561: W/System.err(13464): at org.json.JSONObject.get(JSONObject.java:354)
04-08 21:25:03.561: W/System.err(13464): at org.json.JSONObject.getJSONArray(JSONObject.java:548)
04-08 21:25:03.561: W/System.err(13464): at com.moodwonder.fi.HTTP_SignIn_Thread.doInBackground(HTTP_SignIn_Thread.java:105)
04-08 21:25:03.561: W/System.err(13464): at com.moodwonder.fi.HTTP_SignIn_Thread.doInBackground(HTTP_SignIn_Thread.java:1)
04-08 21:25:03.561: W/System.err(13464): at android.os.AsyncTask$2.call(AsyncTask.java:287)
04-08 21:25:03.561: W/System.err(13464): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
04-08 21:25:03.561: W/System.err(13464): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
04-08 21:25:03.561: W/System.err(13464): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
04-08 21:25:03.561: W/System.err(13464): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
04-08 21:25:03.566: W/System.err(13464): at java.lang.Thread.run(Thread.java:841)
대단히 감사합니다. 나는 companyTopStatements가 독립적 인 JSONArray라고 가정했다. JSON 트리 뷰는 실제로 그것을 얻는 데 도움이됩니다. –
@ user3511823 특히 긴 json 인 경우 – Raghunandan