繁体   English   中英

json 响应迭代 android 工作室/改造

[英]json response iteration android studio/retrofit

这可能非常简单,但我是新手,在 android 工作室做这个。 这个 JSON 解析让我大吃一惊。 基本上我只需要这个数组中 userName 的值。 我能够得到我需要遍历每个“所有者”并获取用户名并将其放入列表的响应。 我不知道如何获取 userName 字段。 用户名可以包含@,也可以不包含。 任何帮助是极大的赞赏!

在此处输入图像描述

您可以使用 GSON 库将userListAccounts转换为 ArrayList ,从中您可以简单地获取每个元素的用户名。

添加GSON依赖

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

为 userListAccounts 创建您的 Model class(对于 Kotlin)

data class UserAccount(
val creationTime: Int,
val deletionTime: Int,
val owner: Owner,
val status: String, // I assume the Datatype is string
)

data class Owner(
val email: String,
val givenName: String,
val id: String,
val lastName: String,
val realm: String, // I assume the Datatype is string
val userName: String
)

为 userListAccounts 创建您的 Model class(对于 Java)

class UserAccount {
Integer creationTime;
Integer deletionTime;
Owner owner;
String status;

public UserAccount(
    Integer creationTime,
    Integer deletionTime,
    Owner owner,
    String status
) {
    this.creationTime = creationTime;
    this.deletionTime = deletionTime;
    this.owner = owner;
    this.status = status;
}
}

class Owner {
    String email;
    String givenName;
    String id;
    String lastName;
    String realm;
    String userName;

    public Owner(
        String email,
        String givenName,
        String id,
        String lastName,
        String realm,
        String userName
    ) {
        this.email = email;
        this.givenName = givenName;
        this.id = id;
        this.lastName = lastName;
        this.realm = realm;
        this.userName = userName;
    }
}

使用 GSON 库将 JSON 转换为 Object

val gson = Gson();
val userAccounts: ArrayList<UserAccount> = gson.fromJson(userListAccounts, UserAccount::class.java);

使用此 Object 访问用户名字段

val usernameList = ArrayList<String>()

for (account in userAccounts)
  usernameList.add(account.owner.username)

usernameList 将包含 JSON 响应中存在的所有用户名。

在您提供的 JSON 层次结构照片中,根元素的名称没有出现,所以我在下面的脚本中假设它为“root_element”

  • 这里可以将整个 JSON 响应读取为JSONObject
  • 由于这个JSONObject中有多个元素(在图片中命名为 0、1、2..); 然后您可以使用getJSONArray()方法获取JSONArray
  • 然后你可以遍历这个JSONArray从 (0, 1, 2...)
  • 之后,您可以从此特定元素中获取另一个JSONObject ,该元素在您的 JSON 结构照片中owner
  • 最后,您可以使用getString()读取此所有者的字符串
String jsonResponse = ""; // Put the entire JSON response as a String 
JSONObject root = new JSONObject(jsonResponse); // jsonResponse is the entire JSON string
JSONArray rootArray = root.getJSONArray("root_element"); // your root element is not show in your provided photo

for (int i = 0; i < rootArray.length(); i++) {

    JSONObject element = rootArray.getJSONObject(i);
    JSONObject owner = element.getJSONObject("owner");
    String email = owner.getString("email");
    String givenName = owner.getString("givenName");
    String id = owner.getString("id");
    String lastName = owner.getString("lastName");
    String realm = owner.getString("realm");
    String userName = owner.getString("userName");

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM