Can';t解析android中从服务器检索到的json字符串,但可以解析为android中定义的字符串
我在尝试在android中创建Can';t解析android中从服务器检索到的json字符串,但可以解析为android中定义的字符串,android,json,Android,Json,我在尝试在android中创建JSONObject时遇到此错误 org.json.JSONException:Value{“0”:[{“original”:“car”,“translation”:“araba”}类型的java.lang.String无法转换为JSONObject 如果使用HttpClient从服务器返回的字符串,则会出现上述错误 如果我使用上面的同一个字符串,定义一个静态字符串并解析它就可以了。在使用HttpClient检索JSON时,是否有一些解码或编码问题需要解释 我正在c
JSONObject
时遇到此错误
org.json.JSONException:Value{“0”:[{“original”:“car”,“translation”:“araba”}
类型的java.lang.String
无法转换为JSONObject
如果使用HttpClient
从服务器返回的字符串,则会出现上述错误
如果我使用上面的同一个字符串,定义一个静态字符串并解析它就可以了。在使用HttpClient
检索JSON
时,是否有一些解码或编码问题需要解释
我正在c#中手动构建JSON
字符串作为测试并返回它
return "{\"0\" : [{\"original\" : \"car\", \"translation\" : \"araba\"}]}";
这是密码
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
String s = "http://10.0.2.2:63200/OnlineArabic/api/datasen";
HttpGet httpGet = new HttpGet(s);
HttpResponse response = httpClient.execute(httpGet, localContext);
HttpEntity entity = response.getEntity();
InputStream instream = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReaderinstream , "UTF-8"),8 );
StringBuilder sb = new StringBuilder();
String line = null;
try {
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
String result= convertStreamToString(instream);
String jsonString = sb.toString();
JSONObject jObject = new JSONObject(jsonString);
有什么想法吗
以下是日志:
12-01 13:48:08.156: W/System.err(22947): org.json.JSONException: Value {"0" : [{"original" : "car", "translation" : "araba"}]} of type java.lang.String cannot be converted to JSONObject
12-01 13:48:08.160: W/System.err(22947): at org.json.JSON.typeMismatch(JSON.java:107)
12-01 13:48:08.160: W/System.err(22947): at org.json.JSONObject.<init>(JSONObject.java:158)
12-01 13:48:08.160: W/System.err(22947): at org.json.JSONObject.<init>(JSONObject.java:171)
12-01 13:48:08.170: W/System.err(22947): at com.ls.audioplayer.MainActivity.call(MainActivity.java:137)
12-01 13:48:08.170: W/System.err(22947): at com.ls.audioplayer.MainActivity$1.onClick(MainActivity.java:294)
12-01 13:48:08.180: W/System.err(22947): at android.view.View.performClick(View.java:2408)
12-01 13:48:08.180: W/System.err(22947): at android.view.View$PerformClick.run(View.java:8816)
12-01 13:48:08.190: W/System.err(22947): at android.os.Handler.handleCallback(Handler.java:587)
12-01 13:48:08.190: W/System.err(22947): at android.os.Handler.dispatchMessage(Handler.java:92)
12-01 13:48:08.221: W/System.err(22947): at android.os.Looper.loop(Looper.java:123)
12-01 13:48:08.221: W/System.err(22947): at android.app.ActivityThread.main(ActivityThread.java:4627)
12-01 13:48:08.221: W/System.err(22947): at java.lang.reflect.Method.invokeNative(Native Method)
12-01 13:48:08.231: W/System.err(22947): at java.lang.reflect.Method.invoke(Method.java:521)
12-01 13:48:08.231: W/System.err(22947): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-01 13:48:08.240: W/System.err(22947): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-01 13:48:08.240: W/System.err(22947): at dalvik.system.NativeStart.main(Native Method)
12-01 13:48:08.156:W/System.err(22947):org.json.JSONException:java.lang.String类型的值{“0”:[{“original”:“car”,“translation”:“araba”}]}无法转换为JSONObject
12-01 13:48:08.160:W/System.err(22947):位于org.json.json.typemissmatch(json.java:107)
12-01 13:48:08.160:W/System.err(22947):位于org.json.JSONObject.(JSONObject.java:158)
12-01 13:48:08.160:W/System.err(22947):位于org.json.JSONObject.(JSONObject.java:171)
12-01 13:48:08.170:W/System.err(22947):位于com.ls.audioplayer.MainActivity.call(MainActivity.java:137)
12-01 13:48:08.170:W/System.err(22947):在com.ls.audioplayer.MainActivity$1.onClick(MainActivity.java:294)
12-01 13:48:08.180:W/System.err(22947):在android.view.view.performClick(view.java:2408)上
12-01 13:48:08.180:W/System.err(22947):在android.view.view$PerformClick.run(view.java:8816)
12-01 13:48:08.190:W/System.err(22947):位于android.os.Handler.handleCallback(Handler.java:587)
12-01 13:48:08.190:W/System.err(22947):位于android.os.Handler.dispatchMessage(Handler.java:92)
12-01 13:48:08.221:W/System.err(22947):在android.os.Looper.loop(Looper.java:123)上
12-01 13:48:08.221:W/System.err(22947):位于android.app.ActivityThread.main(ActivityThread.java:4627)
12-01 13:48:08.221:W/System.err(22947):位于java.lang.reflect.Method.invokenactive(本机方法)
12-01 13:48:08.231:W/System.err(22947):位于java.lang.reflect.Method.invoke(Method.java:521)
12-01 13:48:08.231:W/System.err(22947):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
12-01 13:48:08.240:W/System.err(22947):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
12-01 13:48:08.240:W/System.err(22947):在dalvik.System.NativeStart.main(本机方法)
我唯一想知道的是,在httpget代码中包含字符串时,您正在以某种方式销毁该字符串,我建议您使用一个用于http请求的库,例如,在项目中创建该类,然后,而不是使用您所做的所有代码
EasyHttpClient client = new EasyHttpClient();
String jsonString = client.get("http://10.0.2.2:63200/OnlineArabic/api/datasen");
然后看看你能不能把它放在一个物体里。我无法测试该代码,不幸的是,这里只安装了android 4.2。确保服务器正在发送UTF-8编码的数据。还要注意,在开始/结束处没有新行字符 Eclipse的logcat工具将帮助您找到这些特殊字符。命令行上的Logcat有时不会呈现特殊字符。在代码中 BufferedReader reader=新的BufferedReader(新的InputStreamReaderStream,“UTF-8”),8 将此更改为
BufferedReader读取器=新的BufferedReader(新的InputStreamReader(流内,“UTF-8”),8) 一,。请记录2。请尝试使用联机json格式化程序/转换器检查json。用于创建JSONObject的Android代码在哪里?我添加了创建JSONObject的代码。服务器有额外数据,因此我清除了流,只返回json