JSONException:没有错误值
JSONException: No value for error
我收到以下错误:
JSONException: No value for error
在我的日志中(link 查看我的日志的屏幕截图:http://i.imgur.com/4J66ub4.png)在 Android Studio 中它说原因是因为这行代码:
boolean error = jObj.getBoolean("error");
也是因为这行代码造成的:
AppConfig.URL_LOGIN, new Response.Listener<String>() {
当我将请求发送到我的服务器时(以便我可以登录我的应用程序)。我可以看到它成功了。我已经在服务器上登录了这里的输出:
output user
{ _id: 5650e78597f6e98413a737d4,
name: 'b',
email: 'b@hotmail.com',
hashed_password: 'r+rDSXpJtFl7rXzUNyNbhAwgBSNq5uk2khARiyHyqUzTNF8dkXbUhRhErvMfsUMpUxg89zFWw57uOlI7O006aw==',
salt: 'gzoxOSNZkTvOHyl9xzKZAg==',
username: 'b',
__v: 0,
provider: 'local',
roles: [ 'authenticated' ] }
end output user
POST /api/login 200 355 - 54.181 ms
另一方面,服务器的响应看起来不同。我已经在我的应用程序上记录了输出:
11-22 19:34:30.374 3668-3668/? I/System.out: output response
11-22 19:34:30.375 3668-3668/? I/System.out: {"token":"eyJhbGciOiJIUzI1NiJ9.JTdCJTIyX2lkJTIyOiUyMjU2NTBlNzg1OTdmNmU5ODQxM2E3MzdkNCUyMiwlMjJuYW1lJTIyOiUyMmIlMjIsJTIyZW1haWwlMjI6JTIyYkBob3RtYWlsLmNvbSUyMiwlMjJ1c2VybmFtZSUyMjolMjJiJTIyLCUyMl9fdiUyMjowLCUyMnByb3ZpZGVyJTIyOiUyMmxvY2FsJTIyLCUyMnJvbGVzJTIyOiU1QiUyMmF1dGhlbnRpY2F0ZWQlMjIlNUQlN0Q.eXM6a4dUMDMv2feQpzbgi0q355jbINXI5ErlP_jKNk0","redirect":"/"}
11-22 19:34:30.375 3668-3668/? I/System.out: end output response
我正在 post 通过 link 使用我的方法,因为该方法太大而无法 post 放在这里。在下面的link你可以看到我的方法:
正如错误明确指出的那样,
JSONException: No value for error
这意味着它无法找到 error
密钥。在您的代码中,
System.out.println("output response");
System.out.println(response);
System.out.println("end output response");
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
您从服务器获得的响应
{"token":"eyJhbGciOiJIUzI1NiJ9.JTdCJTIyX2lkJTIyOiUyMjU2NTBlNzg1OTdmNmU5ODQxM2E3MzdkNCUyMiwlMjJuYW1lJTIyOiUyMmIlMjIsJTIyZW1haWwlMjI6JTIyYkBob3RtYWlsLmNvbSUyMiwlMjJ1c2VybmFtZSUyMjolMjJiJTIyLCUyMl9fdiUyMjowLCUyMnByb3ZpZGVyJTIyOiUyMmxvY2FsJTIyLCUyMnJvbGVzJTIyOiU1QiUyMmF1dGhlbnRpY2F0ZWQlMjIlNUQlN0Q.eXM6a4dUMDMv2feQpzbgi0q355jbINXI5ErlP_jKNk0","redirect":"/"}
只有2把钥匙。一个是 token
,另一个是 redirect
。您正试图在下一行中找到 error
,因此它崩溃了。
boolean error = jObj.getBoolean("error");
要解决上述问题,您可以在获取其值之前检查 JSONObject
是否包含 error
键。应该是
JSONObject jObj = new JSONObject(response);
if(jObj.contains("error")){
boolean error = jObj.getBoolean("error");
}
我收到以下错误:
JSONException: No value for error
在我的日志中(link 查看我的日志的屏幕截图:http://i.imgur.com/4J66ub4.png)在 Android Studio 中它说原因是因为这行代码:
boolean error = jObj.getBoolean("error");
也是因为这行代码造成的:
AppConfig.URL_LOGIN, new Response.Listener<String>() {
当我将请求发送到我的服务器时(以便我可以登录我的应用程序)。我可以看到它成功了。我已经在服务器上登录了这里的输出:
output user
{ _id: 5650e78597f6e98413a737d4,
name: 'b',
email: 'b@hotmail.com',
hashed_password: 'r+rDSXpJtFl7rXzUNyNbhAwgBSNq5uk2khARiyHyqUzTNF8dkXbUhRhErvMfsUMpUxg89zFWw57uOlI7O006aw==',
salt: 'gzoxOSNZkTvOHyl9xzKZAg==',
username: 'b',
__v: 0,
provider: 'local',
roles: [ 'authenticated' ] }
end output user
POST /api/login 200 355 - 54.181 ms
另一方面,服务器的响应看起来不同。我已经在我的应用程序上记录了输出:
11-22 19:34:30.374 3668-3668/? I/System.out: output response
11-22 19:34:30.375 3668-3668/? I/System.out: {"token":"eyJhbGciOiJIUzI1NiJ9.JTdCJTIyX2lkJTIyOiUyMjU2NTBlNzg1OTdmNmU5ODQxM2E3MzdkNCUyMiwlMjJuYW1lJTIyOiUyMmIlMjIsJTIyZW1haWwlMjI6JTIyYkBob3RtYWlsLmNvbSUyMiwlMjJ1c2VybmFtZSUyMjolMjJiJTIyLCUyMl9fdiUyMjowLCUyMnByb3ZpZGVyJTIyOiUyMmxvY2FsJTIyLCUyMnJvbGVzJTIyOiU1QiUyMmF1dGhlbnRpY2F0ZWQlMjIlNUQlN0Q.eXM6a4dUMDMv2feQpzbgi0q355jbINXI5ErlP_jKNk0","redirect":"/"}
11-22 19:34:30.375 3668-3668/? I/System.out: end output response
我正在 post 通过 link 使用我的方法,因为该方法太大而无法 post 放在这里。在下面的link你可以看到我的方法:
正如错误明确指出的那样,
JSONException: No value for error
这意味着它无法找到 error
密钥。在您的代码中,
System.out.println("output response");
System.out.println(response);
System.out.println("end output response");
JSONObject jObj = new JSONObject(response);
boolean error = jObj.getBoolean("error");
您从服务器获得的响应
{"token":"eyJhbGciOiJIUzI1NiJ9.JTdCJTIyX2lkJTIyOiUyMjU2NTBlNzg1OTdmNmU5ODQxM2E3MzdkNCUyMiwlMjJuYW1lJTIyOiUyMmIlMjIsJTIyZW1haWwlMjI6JTIyYkBob3RtYWlsLmNvbSUyMiwlMjJ1c2VybmFtZSUyMjolMjJiJTIyLCUyMl9fdiUyMjowLCUyMnByb3ZpZGVyJTIyOiUyMmxvY2FsJTIyLCUyMnJvbGVzJTIyOiU1QiUyMmF1dGhlbnRpY2F0ZWQlMjIlNUQlN0Q.eXM6a4dUMDMv2feQpzbgi0q355jbINXI5ErlP_jKNk0","redirect":"/"}
只有2把钥匙。一个是 token
,另一个是 redirect
。您正试图在下一行中找到 error
,因此它崩溃了。
boolean error = jObj.getBoolean("error");
要解决上述问题,您可以在获取其值之前检查 JSONObject
是否包含 error
键。应该是
JSONObject jObj = new JSONObject(response);
if(jObj.contains("error")){
boolean error = jObj.getBoolean("error");
}