android - 解析数据时出错 org.json.JSONException : End of input at character 10 of

标签 android parsing jsonexception

我目前遇到这个错误“解析数据 org.json.JSONException 时出错:输入结束于字符 10 of”。我用 Chrome 的 Plugin Postman 测试了我的 PHP,服务器端似乎没问题。请查看下面的代码,感谢您的帮助。

PHP代码:

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;
}

postman 结果:

{
"success": "true",
"user_id": "1",
"userFirstName": "username",
"userRank": "99"
}

JAVA代码:

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;
}

最佳答案

您好,我已经检查了您的回复,发现了一个问题

String response = "{success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}";

它在 json 验证中显示有效但成功的关键不是 "在开始所以它创建 json 对象就像

{"userFirstName":"username","user_id":"1","success\"":"true","userRank":"99"}

所以它无法从成功中获得值(value)

像这样写

String response = "{\"success\":\"true\",\"user_id\": \"1\",\"userFirstName\":\"username\", \"userRank\": \"99\"}";

它应该像这样解析

         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();
        }

关于android - 解析数据时出错 org.json.JSONException : End of input at character 10 of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15353644/

相关文章:

javascript - react native : run javascript module from BroadcastReceiver

java - 以下 Java 绘画代码在 Android 中的等价物是什么?

android - 如何为我的 Android 应用程序提供扫描的条形码

parsing - LL(*) 与 PEG 解析器 : what is the difference?

c++ - 使用 C++ 提取 HTML 标签

android - 是否可以在 android 上使用 mupdf 将 pdf 文件合并为一个文件?

java - Java单元测试如何触发JsonProcessingException?

java - JSONException:没有值(value)(解析 JSON 图像)

php - 使用 Instaparse 使用 BNF 解析序列化的 PHP 数据