【问题标题】:JSON parsing exception org.json.JSONException: No valueJSON解析异常org.json.JSONException:无值
【发布时间】:2019-05-15 23:41:46
【问题描述】:

我得到以下我需要解析的 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);

【问题讨论】:

  • 您的回复中没有名为"error_msg" 的字段。也许是“错误”?并且这个字段的类型是boolean,而不是string

标签: android json


【解决方案1】:

这是因为您的 JSON 没有名为 error_msg 的属性。它确实有一个名为error,所以也许这就是你要找的东西(虽然它是boolean,而不是String,它位于顶层,而不是内部user 对象)。

【讨论】:

    【解决方案2】:

    使用optString()不会给你例外

    还要确定error_msg是什么类型的字段

    如果它是String,就使用这个

    String error_msg= address.optString("error_msg")
    

    boolean 使用这个

     boolean error_msg= address.optBoolean("error_msg")
    

    代码 sn-p

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 1970-01-01
      • 2014-11-04
      相关资源
      最近更新 更多