json повторение ответа android студия / модернизация - PullRequest
0 голосов
/ 22 апреля 2020

Это может быть очень просто, но я новичок ie и делаю это в android студии. Этот JSON анализ меня запутал. В основном мне просто нужно значение для userName в этом массиве. Я смог получить ответ, где мне нужно l oop через каждого "владельца", получить userName и поместить его в список. Я не могу понять, как получить поле userName. имя пользователя может содержать @ или не может. Любая помощь с благодарностью!

enter image description here

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

В предоставленной вами JSON иерархической фотографии имя элемента root не отображается, поэтому я предположил его как "root_element" в приведенном ниже сценарии

  • Здесь все JSON Ответ может быть прочитан как JSONObject.
  • . И как этот JSONObject содержит несколько элементов (на рисунке они обозначены как 0, 1, 2 ..); затем вы можете получить JSONArray, используя getJSONArray() метод.
  • Затем вы можете l oop через этот JSONArray, чтобы получить конкретный элемент из (0, 1, 2 ...)
  • После этого вы можете сделать еще один JSONObject из этого конкретного элемента, который является owner на вашей JSON фотографии структуры.
  • И, наконец, вы можете прочитать строки этого владельца, используя 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");

}
0 голосов
/ 23 апреля 2020

Вы можете использовать библиотеку GSON для преобразования userListAccounts в ArrayList, из которого вы можете просто получить имя пользователя для каждого элемента.

Добавить зависимость GSON

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

Создайте свой класс Model для userListAccounts (для 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
)

Создайте свой класс Model для userListAccounts (для 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;
    }
}

Преобразуйте JSON в объект с помощью GSON Библиотека

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

Используйте этот объект для доступа к полю имени пользователя

val usernameList = ArrayList<String>()

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

Список имен пользователей будет содержать все имена пользователей, присутствующие в вашем ответе JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...