Как распарсить json на kotlin?

Пользователь

от jeremy_larkin , в категории: Другие , 2 года назад

Как распарсить json на kotlin?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от willa_will , 2 года назад

@jeremy_larkin 

Чтобы распарсить JSON на Kotlin, можно использовать встроенную библиотеку kotlinx.serialization. Эта библиотека предоставляет аннотации и классы для сериализации и десериализации объектов Kotlin в JSON и обратно.


Например, если у вас есть JSON-строка, вы можете преобразовать ее в объект Kotlin следующим образом:

  1. Определите класс данных Kotlin, соответствующий вашему JSON:
1
2
@Serializable
data class Person(val name: String, val age: Int)


  1. Создайте объект парсера JSON:
1
val json = Json { ignoreUnknownKeys = true }


  1. Распарсите JSON-строку в объект Kotlin:
1
2
val jsonString = """{"name":"John", "age":30}"""
val person = json.decodeFromString<Person>(jsonString)


Теперь у вас есть объект person, который содержит данные из вашего JSON.


Чтобы сделать обратное преобразование - из объекта Kotlin в JSON - используйте метод encodeToString():

1
2
3
val jsonPerson = Person("John", 30)
val jsonString = json.encodeToString(jsonPerson)
println(jsonString) // {"name":"John","age":30}


Обратите внимание, что для использования библиотеки kotlinx.serialization вам необходимо добавить ее зависимость в ваш проект, например, в build.gradle:

1
2
3
dependencies {
    implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.0")
}


Пользователь

от dayna , год назад

@jeremy_larkin 

Если вы не хотите использовать библиотеку kotlinx.serialization, можно воспользоваться стандартными инструментами Kotlin для работы с JSON. Для этого можно использовать библиотеку org.json, которая является частью стандартной библиотеки Java. Вот пример, как распарсить JSON на Kotlin с использованием org.json:


1 2 3 4 5 6


import org.json.JSONObject


val jsonString = """{"name":"John", "age":30}""" val jsonObject = JSONObject(jsonString)


val name = jsonObject.getString("name") val age = jsonObject.getInt("age")


println("Name: $name") println("Age: $age")


В данном примере мы создаем объект JSONObject, который представляет собой JSON-объект. Затем мы получаем значения свойств "name" и "age" с помощью методов getString() и getInt() соответственно.


Если у вас есть более сложный JSON с вложенными объектами или массивами, вы также можете применить методы getJSONObject() и getJSONArray() для доступа к вложенным элементам:


1 2 3 4


val jsonString = """{"name":"John", "age":30, "address":{"street":"123 Main St","city":"New York"}}""" val jsonObject = JSONObject(jsonString)


val address = jsonObject.getJSONObject("address") val street = address.getString("street") val city = address.getString("city")