我正在获取需要解析的JSON字符串:
response => {
"error":false,
"uid":39,
"user":{
"name":"my username",
"email":"solinpromey@gmail.com",
"created_at":"2019-05-15 13:22:19",
"updated_at":null,
"imagen":null,
"nombre":null,
"apellidos":null,
"nivel_usuario":null,
"id_usuario":39,
"unique_id":null,
"verified":null,
"cel_verificado":null,
"tel":"123456789",
"code_cel":null
}
}
我需要获取关键用户内部字段的值。
我正在尝试如下操作,但是不起作用:
String errorMsg = jObj.getString("error_msg");
我在这里遇到异常:
W/System.err: org.json.JSONException: No value for error_msg
,因此,不执行以下行:
JSONObject jObj = new JSONObject(response);
JSONObject user = jObj.getJSONObject("user");
String email = user.getString("email");
Log.d("RESPUESTA", "RESPUESTA email" + email);
答案 0 :(得分:4)
这是因为您的JSON没有名为error_msg
的属性。它确实有一个名为error
的名称,所以也许这正是您要查找的(尽管它是boolean
而不是String
,并且位于而不是user
对象的内部)。
答案 1 :(得分:0)
使用optString()
不会给您例外
还要确保error_msg
是哪种类型的字段
就像它的String
使用此
String error_msg= address.optString("error_msg")
对于boolean
使用此
boolean error_msg= address.optBoolean("error_msg")
代码段
JSONObject jObj = new JSONObject(response);
JSONObject user = jObj.getJSONObject("user");
String email = user.getString("email");
String error_msg= address.optString("error_msg") //string type field use optBoolean for boolean
Log.d("RESPUESTA", "RESPUESTA email" + email);
更多说明在这里 The difference between getString() and optString() in Json