首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误解析数据org.json.JSONException:字符10处的输入结束

错误解析数据org.json.JSONException:字符10处的输入结束
EN

Stack Overflow用户
提问于 2013-03-12 04:59:13
回答 2查看 13.3K关注 0票数 3

目前,我遇到了“错误解析数据org.json.JSONException:字符10的输入结束”这个错误。我用Chrome的插件邮递员测试了我的PHP,服务器端似乎很好。请查看下面的代码并感谢您的帮助。

PHP代码:

代码语言:javascript
复制
public function login($alias, $password){
$user_info = $this->getUserFromDatabase($alias, $password);
if ($user_info != false){
$response["success"] = "true";
$response["user_id"] = $user_info["userID"];
$response["userFirstName"] = $user_info["userFirstName"];
$response["userRank"] = $user_info["userRank"];
echo json_encode($response);
}else{
$response["success"] = "false";
$response["error"] = "true";
echo json_encode($response);
}
}

public function getUserFromDatabase($android_alias, $android_password) {
$db_query = mysql_query("SELECT userID, userFirstName, userRank FROM capUserTable 
WHERE userAlias = '$android_alias' AND userPassword = '$android_password'") 
or die(mysql_error());

$query_results = mysql_fetch_assoc($db_query);
return $query_results;
}

邮差调查结果:

代码语言:javascript
复制
{
"success": "true",
"user_id": "1",
"userFirstName": "username",
"userRank": "99"
}

JAVA代码:

代码语言:javascript
复制
private InputStream inputStream = null;
private JSONObject jObject = null;
private String json = "";

public JSONparser() {
}

public JSONObject getJSONFromURL(String URL, List<NameValuePair> params){
try{
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(URL);
httpPost.setEntity(new UrlEncodedFormEntity(params)); 
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
inputStream = httpEntity.getContent();
}catch(UnsupportedEncodingException e){
e.printStackTrace();
Log.e("UnsupportedEncodingException", "Unsupported Encoding Exception" + e.toString());
}catch(ClientProtocolException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}

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

try{
jObject = new JSONObject(json); //this is where the problem occurs
}catch(JSONException e){
Log.e("JSON Parser", "Error parsing data " + e.toString()); 
}
return jObject;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-12 06:43:12

嗨,我检查了你的反应,收到一个问题

代码语言:javascript
复制
String response = "{success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}";

其在json验证中显示有效,但在“启动”中显示“成功”键,因此它的创建json对象如下

代码语言:javascript
复制
{"userFirstName":"username","user_id":"1","success\"":"true","userRank":"99"}

所以它无法从成功中获得价值。

写这样的东西

代码语言:javascript
复制
String response = "{\"success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}";

它应该像这样解析

代码语言:javascript
复制
         try {
            JSONObject  jobj  = new JSONObject(response);
            String succes = jobj.getString("success");
            String userFirstName = jobj.getString("userFirstName");
            String user_id = jobj.getString("user_id");
            String userRank = jobj.getString("userRank");
            String user_id = jobj.getString("user_id"); 

        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
票数 2
EN

Stack Overflow用户

发布于 2013-11-16 07:41:59

其实我以前也面临着同样的问题.我通过改变杰森的班来清除错误..。

代码语言:javascript
复制
 // function get json from url
  // by making HTTP POST or GET mehtod
  public JSONObject makeHttpRequest(String url, String method,
                  List<NameValuePair> params) {

          // Making HTTP request
          try {

                  // check for request method
                  if(method == "POST"){
                          // request method is POST
                          // defaultHttpClient
                          DefaultHttpClient httpClient = new DefaultHttpClient();
                          HttpPost httpPost = new HttpPost(url);
                          httpPost.setEntity(new UrlEncodedFormEntity(params));

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

                  }else if(method == "GET"){

                          // request method is GET
                          DefaultHttpClient httpClient = new DefaultHttpClient();
                          String paramString = URLEncodedUtils.format(params, "utf-8");
                          url += "?" + paramString;
                          HttpGet httpGet = new HttpGet(url);

                          HttpResponse httpResponse = httpClient.execute(httpGet);
                          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 {
               Log.d("response string",json);
                  jObj = new JSONObject(json);
          } catch (JSONException e) {
                  Log.e("JSON Parser", "Error parsing data " + e.toString());
          }

          // return JSON String
          return jObj;

  } 

我希望它能帮到你

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15353644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档