Can';t解析android中从服务器检索到的json字符串,但可以解析为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

我在尝试在android中创建
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