从JSONObject获取字符串

时间:2017-12-27 17:33:32

标签: java android json rest

我试图从我从API请求中收到的JSONObject中获取字符串。

我的JSONObject如下:

{
  "status":"success",
  "message":"user authenticated",
  "data": { "id":11,
            "username":"2160481",
            "token":"MEznhD8RE1-ykZLOdGs4i9ZfRFQl5h_"
  }
}

我已经尝试了一些我在这里找到的回复,比如getString(" token")没有成功。我还尝试在里面创建一个带有JSONObject的数组,并从那里获取字符串,也没有成功。

编辑:

尝试1:

String data = response.toString();
JSONObject teste = new JSONObject(data);
String status = teste.getString("status");
System.out.println(status);

尝试2:

String token = null;
        try {
            JSONArray arr = new JSONArray();
            arr.put(response);
            JSONObject jObj = arr.getJSONObject(0);
            token = jObj.getString("token");
    System.out.println("---> Token: " + token);
        } catch (JSONException e) {
            System.out.println("---> Error:" + e);
        }

尝试3:

String token = null;
        try {
            token = response.getString("token");
    System.out.println("---> Token: " + token);

    } catch (JSONException e) {
        System.out.println("---> Error:" + e);
    }`

3 个答案:

答案 0 :(得分:2)

你应该能够通过使用它获得令牌。

try {
        String data = response.toString();
        JSONObject jsonObject = new JSONObject(data);
        String token = jsonObject.getJSONObject("data").getString("token");
        System.out.println(token);
    } catch (JSONException e) {
        e.printStackTrace();
    }

答案 1 :(得分:0)

您的令牌字段位于另一个JSONObject数据中,因此您必须执行以下操作

yourMainObject.getJSONObject("data").getString("token");

如果您不确定您的令牌是否始终存在,您也可以使用optString()方法而不是getString

答案 2 :(得分:0)

只需使用将POJO序列化/反序列化为Java对象的库。

像gson:https://github.com/google/gson