Я получаю довольно глубокую строку объекта JSON от службы, которую я должен проанализировать на объект JSON, а затем сопоставить ее с классами.
Как я могу преобразовать строку JSON в объект в Котлине?
После этого сопоставления с соответствующими классами я использовал StdDeserializer от Jackson. Проблема возникает в тот момент, когда у объекта есть свойства, которые также необходимо десериализовать в классы. Мне не удалось получить сопоставитель объектов внутри другого десериализатора, по крайней мере, я не знал, как это сделать.
Заранее благодарю за любую помощь. Желательно, изначально, я пытаюсь уменьшить количество необходимых мне зависимостей, поэтому, если ответ касается только манипуляций и синтаксического анализа JSON, этого будет достаточно.
Ответы:
Вы можете использовать эту библиотеку https://github.com/cbeust/klaxon
Klaxon - это легкая библиотека для анализа JSON в Kotlin.
источник
Нет никаких сомнений в том, что будущее парсинга в Kotlin будет за kotlinx.serialization. Это часть библиотек Kotlin. На момент написания он все еще находится на стадии инкубатора.
https://github.com/Kotlin/kotlinx.serialization
источник
Json
(это часто бывает ). Кроме того, есть несколько открытых проблем Github с меткой ошибки. Таким образом, я бы сказал, что это все еще рискованно для использования в производственной среде (если вы не готовы тратить время на устранение потенциальных проблем и не планируете часто обновлять его). Проект действительно интересен, особенно для мультиплатформенных проектов Kotlin, но пока он нестабилен.Без внешней библиотеки (на Android)
Чтобы разобрать это:
Используйте эти классы:
Использование:
источник
JsonObject
если ваша JVM работает под Java7 ( docs.oracle.com/javaee/7/api/javax/json/JsonObject.html )?Вы можете использовать
Gson
.пример
Шаг 1
Добавить компиляцию
Шаг 2
Преобразуйте json в
Kotlin Bean
(используйте JsonToKotlinClass )Как это
Json
данныеKotlin Bean
Шаг 3
Использовать
Gson
источник
{
или[
val
Свойство может быть легко ,null
если он отсутствует в формате JSON. Кроме того, значения по умолчанию вообще не используются.Не уверен, что это то, что вам нужно, но я сделал это так.
Используя import org.json.JSONObject:
Вот образец json:
{"Еда": [{"FoodName": "Яблоки", "Вес": "110"}]}
источник
data class SomeClass(val param1: Int, val param2: Int)
.for (i in 0 until foodJson!!.length()) {
вместоfor (i in 0..foodJson!!.length() - 1) {
. Он делает то же самое, но более наглядноЯ лично использую модуль Джексона для Kotlin, который вы можете найти здесь: jackson-module-kotlin .
В качестве примера, вот код для синтаксического анализа JSON дерева навыков Path of Exile, который довольно тяжелый (84 КБ строк при форматировании):
Код Котлина:
JSON (неформатированный): http://filebin.ca/3B3reNQf3KXJ/rawSkilltree.json
Учитывая ваше описание, я считаю, что оно соответствует вашим потребностям.
источник
Чтобы преобразовать JSON в Kotlin, используйте http://www.json2kotlin.com/
Также вы можете использовать плагин Android Studio. Файл> Настройки, выберите
Plugins
в левом дереве, нажмите «Обзор репозиториев ...», найдите « JsonToKotlinClass », выберите его и нажмите зеленую кнопку «Установить».После перезапуска AS вы можете его использовать. Вы можете создать класс с помощью
File > New > JSON To Kotlin Class (JsonToKotlinClass)
. Другой способ - нажать Alt + K.Затем вы увидите диалоговое окно для вставки JSON.
В 2018 мне пришлось прибавить
package com.my.package_name
в начале урока.источник
Прежде всего.
Вы можете использовать плагин преобразования классов JSON в Kotlin Data в Android Studio для сопоставления JSON с классами POJO (класс данных kotlin). Этот плагин аннотирует ваш класс данных Kotlin в соответствии с JSON.
Затем вы можете использовать конвертер GSON для преобразования JSON в Kotlin.
Следуйте этому полному руководству: Руководство по синтаксическому анализу Kotlin Android JSON
Если вы хотите разобрать json вручную.
Код для анализа над массивом JSON и его объектом с индексом 0.
источник
http://www.jsonschema2pojo.org/ Привет, вы можете использовать этот веб-сайт для преобразования json в pojo.
Ctrl + Alt + Shift + K
После этого вы можете вручную преобразовать этот класс модели в класс модели kotlin. с помощью вышеуказанного ярлыка.
источник
Немного поздно, но все равно.
Если вы предпочитаете анализировать JSON, а не JavaScript, например конструкции, использующие семантику Kotlin, я рекомендую JSONKraken , автором которого я являюсь.
Предложения и мнения по этому поводу приветствуются!
источник
Загрузите исходный код дема отсюда ( парсинг Json в android kotlin )
Добавьте эту зависимость:
Вызов функции API:
источник