Android 从JSON对象获取字符串

Android 从JSON对象获取字符串,android,json,Android,Json,我必须从服务器获得以下响应:page:{“result”:“ok”,“id_photo”:36782710}。我正试图通过这样做从那里获得结果: String r=page.toString(); JSONArray jArray = new JSONArray(r); JSONObject jsdata = r.getJSONObject(0); String result = jsdata.getString("result"); System.out.println("Raspunsul

我必须从服务器获得以下响应:
page:{“result”:“ok”,“id_photo”:36782710}
。我正试图通过这样做从那里获得
结果

String r=page.toString();
JSONArray jArray = new JSONArray(r);
JSONObject jsdata = r.getJSONObject(0);

String result = jsdata.getString("result");
System.out.println("Raspunsul de la server este:" +result);
但我得到了以下错误:

WARN/System.err(30452): org.json.JSONException: Value {"result":"ok","id_photo":36782710} of type org.json.JSONObject cannot be converted to JSONArray
at org.json.JSON.typeMismatch(JSON.java:107)
at org.json.JSONArray.<init>(JSONArray.java:91)
at org.json.JSONArray.<init>(JSONArray.java:103)
at com.Contest.DialogExampleActivity.executeMultiPartPost(DialogExampleActivity.java:131)
at com.Contest.DialogExampleActivity.btnSend_onClick(DialogExampleActivity.java:88)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at android.view.View$1.onClick(View.java:2157)
at android.view.View.performClick(View.java:2534)
at android.view.View$PerformClick.run(View.java:9210)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method
WARN/System.err(30452):org.json.JSONException:org.json.JSONObject类型的值{“结果”:“ok”,“id_photo”:36782710}无法转换为JSONArray
在org.json.json.typeMismatch(json.java:107)
位于org.json.JSONArray(JSONArray.java:91)
位于org.json.JSONArray(JSONArray.java:103)
在com.Contest.DialogExampleActivity.executeMultiPartPost上(DialogExampleActivity.java:131)
在com.Contest.DialogExampleActivity.btnSend\u onClick上(DialogExampleActivity.java:88)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在android.view.view$1.onClick上(view.java:2157)
在android.view.view.performClick上(view.java:2534)
在android.view.view$PerformClick.run(view.java:9210)
位于android.os.Handler.handleCallback(Handler.java:587)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:123)
位于android.app.ActivityThread.main(ActivityThread.java:3701)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:507)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
在dalvik.system.NativeStart.main(本机方法

有人知道吗?

尝试将其实例化为JSONObject,因为您解析的数据不是数组而是对象

JSONObject json = new JSONObject(response);
String result = json.getString("result");

尝试将其实例化为JSONObject,因为解析的数据不是数组而是对象

JSONObject json = new JSONObject(response);
String result = json.getString("result");
试试这个:

试试这个:


正如Madslejensen所说,它应该被视为
JSONObject
而不是
JSONArray
,对于将来的参考,在使用正确类型时有区别的简单建议是:
JSONObject
包含在
{}
中,而
JSONArray
包含在
[]

正如Madslejensen所说,它应该被视为
JSONObject
而不是
JSONArray
,对于将来的参考,在使用正确类型时有不同的简单建议是:
JSONObject
包含在
{}
中,而
JSONArray
包含在
[]

+1非常感谢您添加了这一点信息。我一直在努力找出问题所在。一旦我切换到JSONArray,它就成功了!+1非常感谢您添加了这一点信息。我一直在努力找出问题所在。一旦我切换到JSONArray,它就成功了预计起飞时间!