ANDROID /解析JSON对象编码的字符串时出错

时间:2013-04-04 00:48:01

标签: android json parsing string-parsing

我的代码从服务器接收一个JSON对象编码字符串,可以是: [{“logstatus”:“0”}]或[{“logstatus”:“1”}]

然后它转换此JSON(作为ImputStream接收),然后我将其转换为字符串,稍后我想将其转换为JSON对象。但这里出现了错误。 这是我的代码:

public JSONArray getserverdata(ArrayList<NameValuePair> parameters, String urlwebserver ) {   
  httppostconnect(parameters,urlwebserver);    
  if (is!=null) { //si obtuvo una respuesta    
    getpostresponse();    
    return getjsonarray();   
  } else {   
    return null;    
  }
}

private void httppostconnect(ArrayList<NameValuePair> parametros, String urlwebserver) {
  try {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(urlwebserver);
    httppost.setEntity(new UrlEncodedFormEntity(parametros));
    //ejecuto peticion enviando datos por POST
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
  } catch(Exception e) {
    Log.e("log_tag", "Error in http connection "+e.toString());
  }     
}

public void getpostresponse() {       
  try {    
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
      sb.append(line + "\n");
    }
    is.close();
    result = sb.toString();
    Log.e("getpostresponse"," result="+sb.toString());
  } catch(Exception e) {
    Log.e("log_tag", "Error converting result "+e.toString()); 
  }
}

public JSONArray getjsonarray() {
  //parse json data
  try {       
    JSONArray jArray = new JSONArray(result);
    return jArray;
  } catch(JSONException e) {
    Log.e("log_tag", "Error parsing data "+e.toString());
    return null;
  } 
}

错误发生在函数getjsonarray()中。

解析数据时出错org.json.JSONException:Value ??类型java.lang.String无法转换为JSONArray。

我已经验证服务器返回格式正确的JSON(可以是[{“logstatus”:“0”}]或[{“logstatus”:“1”}]。

我也试过使用JSONToken,但它也不起作用。

希望你能帮助我!

2 个答案:

答案 0 :(得分:0)

请注明您收到的数据。我的猜测是你没有得到你的想法。该字符串看起来很好,应该解析得很好。当您注销该异常时,还要注销有问题的String,您应该会看到问题。

答案 1 :(得分:0)

如果要从String创建JsonArray,首先需要验证String是否具有执行该操作的格式。

您可以打印结果字符串并对其进行测试here.