jsonException:字符1的输入结束

时间:2013-04-18 04:08:10

标签: android

End of input at character 1 of

我正在制作一个listview并使用JSONObject进行数组目的但是我得到这个错误我不知道如何解决它我甚至不知道我的例外发生在我运行我的程序时它只是结束并且不显示任何结果这是我的java文件我希望有人能找到异常

@Override
            protected ArrayList<TodayDetails> doInBackground(Void... params) {
                    try {
                            // Create a new HTTP Client
                            DefaultHttpClient defaultClient = new DefaultHttpClient();
                            // Setup the get request
                            HttpGet httpGetRequest = new HttpGet("http://api.androidhive.info/contacts");

                            // Execute the request in the client
                            HttpResponse httpResponse = defaultClient
                                            .execute(httpGetRequest);
                            // Grab the response
                            BufferedReader reader = new BufferedReader(
                                            new InputStreamReader(httpResponse.getEntity()
                                                            .getContent(), "UTF-8"));
                            String result = reader.readLine();
                            JSONObject object = new JSONObject(result);
                            JSONArray Jarray = object.getJSONArray("contact");
                            for (int i = 0; i < Jarray.length(); i++) {
                               JSONObject Jasonobject = Jarray.getJSONObject(i);

                                    today_details = new TodayDetails();
                                    today_details.setId(Jasonobject.getInt("id"));
                                    today_details.setName(Jasonobject.getString("name"));
                                    today_details.setEmail(Jasonobject.getString("email"));
                                    today_details.setAddress(Jasonobject.getString("address"));
                                    today_details.setGender(Jasonobject.getString("gender"));
                                    today_details.setPhone(Jasonobject.getInt("phone"));
                                    today_details.setHome(Jasonobject.getInt("home"));
                                    today_details.setMobile(Jasonobject.getInt("mobile"));
                                    today_details.setOffice(Jasonobject.getInt("office"));

                                    search_results.add(today_details);
                       }
        } catch(Exception e){
           e.printStackTrace();
        }
        return search_results;
    }
    protected void onPostExecute(ArrayList<TodayDetails> search_results) {
        if(WeatherToday.this.pd != null){
            WeatherToday.this.pd.dismiss();
        }
        ArrayList<TodayDetails> today_details = search_results;
        list_view_main = (ListView)findViewById(R.id.todaylist);
        list_view_main.setAdapter(new TodayListAdapter(getApplicationContext(), today_details));
        }
    };
}

2 个答案:

答案 0 :(得分:2)

SANITARY CHECK 使用JSON时

检查JSON端是否有错误。 这是json验证的有用链接。

Jsonlint尝试此链接验证您的JSON,只是复制/粘贴您的JSON并检查其是否有效

如果它有效,然后在这里发布,可能会更能帮助你。

如果它无效......那么一切都会好起来的: - )

代码检查

  1. 通过逐行读入StringBuilder
  2. 添加完整的json
  3. 调用toString并将生成的JSOn作为String传递给JSONObject obj = new JsonObject(String)函数。
    1. 所以现在如果你得到一个例外,那么你的json中的一些不好的东西通过上面提到的链接检查它。
    2. 如果它工作正常,则迭代jsonObject以获取数组,对象数组或其他任何内容。
  4. 我希望你能找到这个有用的

    更新

    使用Gson库非常有用,因为json变得更大。它为你处理所有事情。本质上是抽象的,并为你提供一些静态方法来检索json或制作一个。

    这是我为使用Gson库进行json解析而编写的程序的要点。

    Gson demo programs

    帮助文章

    Blog help

    Gson Official

答案 1 :(得分:1)

我能看到的第一件事是你希望“联系人”不是“联系”:

 JSONArray Jarray = object.getJSONArray("contact");

自:

{
"contacts": [
    {
            "id": "c200",

并不是那个天气的东西也在那个JSON中。显然有许多事情都可能失败。

编辑:我看到你摆脱了天气。 HEH

编辑2 :然而,似乎无论是什么打印,logcat输出都关心天气。

编辑3 :您正在阅读 JSON的一行,即{。这不是合适的JSON。阅读完整的输出。

   String result = reader.readLine();