0

我的代码从服务器接收一个 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 但它也不起作用。

希望你能帮我!

4

2 回答 2

0

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

您可以打印结果字符串并在此处进行测试。

于 2013-04-04T01:10:51.860 回答
0

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

于 2013-04-04T00:59:44.600 回答