从JSONObject中获取一个字符串

3

我想从一个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);
        }

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

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

8

你的令牌字段位于另一个JSONObject数据内,因此你需要执行以下操作:

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

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


4
你可以使用这个方法获取令牌。
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();
}

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接