我在解析 JSON 响应时遇到了困难,通常我习惯用 Java 解析 JSON,但这次我真的崩溃了。有人可以解释一下出了什么问题以及如何解决它吗?
JSON
[{
"0": "1",
"id": "1",
"1": null,
"name": null,
"2": "tim",
"username": "tim",
"3": "tim@billstrom.me",
"email_address": "tim@billstrom.me",
"4": "http:\/\/graph.facebook.com\/timbillstrom\/picture?width=500&height=500",
"img": "http:\/\/graph.facebook.com\/timbillstrom\/picture?width=500&height=500"
}]
JAVA
JSONArray Jarray = new JSONArray(resJson);
String Jobject = Jarray.getJSONObject(0).getString("img");
LOGCAT
09-15 20:15:36.637: W/System.err(9156): org.json.JSONException: Index 0 out of range [0..0)
09-15 20:15:36.677: W/System.err(9156): at org.json.JSONArray.get(JSONArray.java:263)
09-15 20:15:36.677: W/System.err(9156): at org.json.JSONArray.getJSONObject(JSONArray.java:480)
09-15 20:15:36.677: W/System.err(9156): at com.christian.omegle.MainActivity$DownloadWebPageTask.onPostExecute(MainActivity.java:205)
09-15 20:15:36.687: W/System.err(9156): at com.christian.omegle.MainActivity$DownloadWebPageTask.onPostExecute(MainActivity.java:1)
09-15 20:15:36.687: W/System.err(9156): at android.os.AsyncTask.finish(AsyncTask.java:631)
09-15 20:15:36.687: W/System.err(9156): at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-15 20:15:36.687: W/System.err(9156): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
09-15 20:15:36.687: W/System.err(9156): at android.os.Handler.dispatchMessage(Handler.java:99)
09-15 20:15:36.687: W/System.err(9156): at android.os.Looper.loop(Looper.java:213)
09-15 20:15:36.687: W/System.err(9156): at android.app.ActivityThread.main(ActivityThread.java:4787)
09-15 20:15:36.687: W/System.err(9156): at java.lang.reflect.Method.invokeNative(Native Method)
09-15 20:15:36.687: W/System.err(9156): at java.lang.reflect.Method.invoke(Method.java:511)
09-15 20:15:36.687: W/System.err(9156): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
09-15 20:15:36.687: W/System.err(9156): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
09-15 20:15:36.687: W/System.err(9156): at dalvik.system.NativeStart.main(Native Method)
最佳答案
尝试找出差异:
import org.json.JSONArray;
import org.json.JSONException;
public class JsonTest {
/**
* @param args
* @throws JSONException
*/
public static void main(String[] args) throws JSONException {
String resJson = "[{\r\n" +
" \"0\": \"1\",\r\n" +
" \"id\": \"1\",\r\n" +
" \"1\": null,\r\n" +
" \"name\": null,\r\n" +
" \"2\": \"tim\",\r\n" +
" \"username\": \"tim\",\r\n" +
" \"3\": \"tim@billstrom.me\",\r\n" +
" \"email_address\": \"tim@billstrom.me\",\r\n" +
" \"4\": \"http:\\/\\/graph.facebook.com\\/timbillstrom\\/picture?width=500&height=500\",\r\n" +
" \"img\": \"http:\\/\\/graph.facebook.com\\/timbillstrom\\/picture?width=500&height=500\"\r\n" +
"}]";
JSONArray Jarray = new JSONArray(resJson);
String Jobject = Jarray.getJSONObject(0).getString("img");
System.out.println(Jobject);
}
}
输出:http://graph.facebook.com/timbillstrom/picture?width=500&height=500
关于java - 陷入解析 JSON 的困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18815745/