Дооснащение отправкой Pojo как данными формы - PullRequest
0 голосов
/ 15 апреля 2020

Существуют ли какие-либо способы преобразования java / kotlin pojo в объект данных Form. Например, если у меня есть два класса

data class Student(
        var id: Int,
        var name: String,
        var age: Int
)

data class College
    (
        var id: Int,
        var address: String,
        var students: Array<Student>
)

и массив этих объектов будет выглядеть следующим образом в JSON

[
  {
    "id": 1,
    "address": "12 Lincoln Street",
    "students": 
    [
      {
        "id": 1,
        "name": "Mike",
        "age": 17
      },
      {
        "id": 2,
        "name": "Ann",
        "age": 18
      },
      {
        "id": 2,
        "name": "Bob",
        "age": 20
      }
    ]
  },
  {
    "id": 2,
    "address": "544 Peninsula Street Brooklyn",
    "students": 
    [
      {
        "id": 4,
        "name": "Tom",
        "age": 17
      },
      {
        "id": 5,
        "name": "Liza",
        "age": 21
      },
      {
        "id": 6,
        "name": "Rachel",
        "age": 22
      }
    ]
  }
]

Могу ли я каким-то образом автоматически преобразовать его в данные формы в нечто вроде this?

college[0][id] = 1
college[0][address] = "12 Lincoln Street"
college[0][students][0][id] = 1
college[0][students][0][name] = "Mike"
college[0][students][0][age] = 17
college[0][students][1][id] = 2
college[0][students][1][name] = "Ann"
college[0][students][1][age] = 18
college[0][students][2][id] = 3
college[0][students][2][name] = "Bob"
college[0][students][2][age] = 20
college[1][id] = 2
college[1][address] = "544 Peninsula Street Brooklyn"
college[1][students][0][id] = 4
college[1][students][0][name] = "Tom"
college[1][students][0][age] = 17
college[1][students][1][id] = 5
college[1][students][1][name] = "Liza"
college[1][students][1][age] = 21
college[1][students][2][id] = 3
college[1][students][2][name] = "Rachel"
college[1][students][2][age] = 22

Может быть, есть какие-нибудь библиотеки java / kotlin, которые могут преобразовывать Json строку для формирования данных?

1 Ответ

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

Вы можете создать 2 модели (класс pojo):

data class Student(
    @Expose
    @SerializedName("id")
    var id: Int,
    @Expose
    @SerializedName("name")
    var name: String,
    @Expose
    @SerializedName("age")
    var age: Int
)

data class College(
    @Expose
    @SerializedName("id")
    var id: Int,
    @Expose
    @SerializedName("address")
    var address: String,
    @Expose
    @SerializedName("students")
    var students: List<Student>
)

Затем выполнить синтаксический анализ от json до такого объекта:

gson.fromJson(jsonString, Student::class.java)
 // or 
gson.fromJson(jsonString, College::class.java

Надеюсь, эта помощь!

...