2011-08-26 179 views
0

我必须从一台服务器如下回应:page:{"result":"ok","id_photo":36782710}。而我试图这样做是为了获得从那里result从JSON对象获得字符串

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 

任何任何想法?

回答

3

尝试将它实例化为JSONObject,而不是将数据解析为数组,而是对象。

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

它的好,工作:) – adrian

2

正如madsleejensen说,它应该被视为JSONObjectJSONArray,并为未来的引用,简单的意见,不同的时候使用权类型为:JSONObject[]涵盖{}JSONArray覆盖。

+0

好的,谢谢...很高兴知道 – adrian

+0

+1非常感谢您添加这一点的信息。我一直在试图弄清楚问题所在。一旦我切换到JSONArray - 它的工作! –