本文介绍了Android的JSON解析问题,java.lang.String中不能转换到的JSONObject的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用下面的code解析JSON的Andr​​oid应用程序

I am using the following code to parse JSON in android application

    JSONArray category = null;
    JSONParser jParser = new JSONParser();

    JSONObject json = jParser
            .getJSONFromUrl("http://www.inchid.com/mobile/cate.php?cType=Product");

    try {

        category = json.getJSONArray("cate");


        for (int i = 0; i < category.length(); i++) {
            JSONObject c = category.getJSONObject(i);

            String name = c.getString("cate_name");

        }

    } catch (JSONException e) {
        e.printStackTrace();
    } catch (Exception e) {

        // TODO: handle exception
        System.out.println("ERRRORRRRRRRRRRRRRRRRRR");

    }

JSONParser类

  public JSONObject getJSONFromUrl(String url) {

    // Making HTTP request
    try {
        // defaultHttpClient
        DefaultHttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        HttpResponse httpResponse = httpClient.execute(httpPost);
        HttpEntity httpEntity = httpResponse.getEntity();
        is = httpEntity.getContent();          

    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }

    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }

    // return JSON String
    return jObj;

}

这让我的应用程序强制关闭和下面的图片是logcat的的屏幕截图。

This makes my application to force close and below picture is the screen shot of logcat.

logcat的错误是:

Logcat Error is:

错误解析数据org.json.JSONException:java.lang.String类型的值i»¿不能转换为JSONObject的

推荐答案

有些时候,当您从那个时候,当您撰写字符串一些未想字符添加服务器获取数据发生什么。所以,试试这个它会帮助你。

Some times what happen when you are fetching data from the server at that time some un-wanted characters was added when you compose the String. So try this it will help you.

而不是从

return jObj;

return new JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1));

同样在源字符串中删除隐藏字符。

Also remove hidden characters on source String.

这篇关于Android的JSON解析问题,java.lang.String中不能转换到的JSONObject的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 19:15