JSON解析错误(没有HTTP错误。只是字符串转换)

时间:2012-02-01 00:00:40

标签: php android json parsing

所以我用Google搜索并找到了类似于我需要的示例。我已经调整和调整并解决了我的大部分问题,但是我已经无法通过这个问题而感到困惑。一些Backround:所以我正在构建一个App,通过PHP生成一个JSON对象来查询MySQL数据库。我可以在SDK上的网络浏览器中看到“[{”question“:”为什么天蓝色“}]”所以我知道我可以访问该对象。权限也在我的清单中正确设置。当我尝试将对象解析为字符串时出现问题。我从我的日志cat中获得“转换结果java.lang.NullPointerException的错误”。

现在我已经尝试了

//convert response to string
    try{
        BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        String json = reader.readLine();
        JSONTokener tokener = new JSONTokener(json);
        JSONArray finalResult = new JSONArray(tokener);

          }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
          }

我也试过

try{
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
                    sb = new StringBuilder();
                    sb.append(reader.readLine() + "\n");
                    String line="0";
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result=sb.toString();

          }catch(Exception e){
                Log.e("log_tag", "Error converting result "+e.toString());
          }

我想我会发布我的http(即使是在自己的线程中最好的做法! - 然后我使用全局变量(facepalm))

    new Thread() {
    public void run() {
          try{
               HttpClient httpclient = new DefaultHttpClient();

                          HttpPost httppost = new HttpPost("http://192.168.1.55/qgrap.php");

                          httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                          HttpResponse response = httpclient.execute(httppost);

               }catch(Exception e){
                   Log.e("log_tag", "Error in http connection"+e.toString());
              } 
    }
    }.start();

在第二个代码集的HTTP中,你需要做一些获取内容的东西,或者我想专注于第一个代码集。这里的响应是一个全局变量。当它被传递到BufferReader参数时被操纵。我在String json = reader.readLine();我应该以字符串形式访问数据。无论哪种方式,日志说没有去,我不知道为什么。我也不能只在php端创建一个字符串而不是使用JSON吗?

BOUNTY:一千个互联网

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

好吧所以我这样做是因为我不想使用gson我想让我的代码工作。我有一个我不明白的错误 转换结果java.lang.NullPointerException繁荣时出错了。

     try{
    BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
    String json = reader.readLine();
    JSONTokener tokener = new JSONTokener(json);
    JSONArray finalResult = new JSONArray(tokener);

      }catch(Exception e){
            Log.e("log_tag", "Error converting result "+e.toString());
      }

这段代码中的某个地方就是问题所在。我没有看到它。 无论哪种方式我去html5

答案 2 :(得分:0)

你应该在某种循环中捆绑你的输入,而不是假设它全部在第一行:

BufferedReader userInfoReader = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder builder = new StringBuilder();
while ((line = userInfoReader.readLine()) != null) {
    builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);