#android #json #kotlin #gson
#Android #json #kotlin #gson
Вопрос:
Я пытаюсь получить оба Ys в этой структуре JSON, используя gson и kotlin
{
"y": {
"x":"value",
"y":"value"
}
}
Первый, который я получил, используя этот код:
@Expose
@SerializesName("y")
val y:String?
но во второй раз я не смог до него добраться.
Комментарии:
1. Первый y — это карта, а не строка
2. это потому, что первый y является объектом
3. @Zoe это строка:( , но все же, если бы вы могли представить мне решение на случай, если это карта
4. @a_local_nobody да, так как я могу добраться до второго y?
5. Нет, первый y не является строкой. Это объект, как сказал a_local_nobody, который представлен в виде карты в Java. Второй y — это строка, и она хранится как ключ в карте первого y. Хотя я понятия не имею, как вы собираетесь это расширять (потому что я не знаю и не использую gson), в эквиваленте raw map вы получаете значение второго y с
json["y"]["y"]
Ответ №1:
Первый Y — это object, а второй — string это модели, написанные на Java, просто скопируйте и вставьте их в android studio, и они преобразуют их в Kotlin
public class Example {
@SerializedName("y")
@Expose
private Y y;
public Y getY() {
return y;
}
public void setY(Y y) {
this.y = y;
}
}
………………………………………
public class Y {
@SerializedName("x")
@Expose
private String x;
@SerializedName("y")
@Expose
private String y;
public String getX() {
return x;
}
public void setX(String x) {
this.x = x;
}
public String getY() {
return y;
}
public void setY(String y) {
this.y = y;
}
}
В android studio есть плагины, которые могут конвертировать все классы Json в Pojo, вы должны попробовать их (например: JsonToKotlinClass)
Ответ №2:
Попробуйте, как показано ниже
data class ObjectY(
@SerializedName("x") val stringX: String,
@SerializedName("y") val stringY: String,
)
data class ResponseY(
@SerializedName("y") val y: ObjectY,
)