Прочитать массив карт из файла в kotlin - PullRequest
0 голосов
/ 16 сентября 2018

Я сохранил следующие данные в файле из консоли:

Username : ali 
Age : 56 
Email : abc@gmail.com
Password :123456
Skills :Skills : [{android=2, java=3}, {android=2, java=3}]

Последнее поле - это массив списков карт.

var skills = arrayListOf<Map<String, Int>>()
var skill = mutableMapOf<String,Int>()
var skillType: String

print("Skills with experience : ")
   skillType = readLine()!!
   print("Experience : ")
   skill[skillType] = readLine()!!.toInt()

   skills.add(skill)

Теперь я хочу прочитать это поле навыков как тот же массив списков карт, чтобы проверить, присутствует ли какой-то конкретный навык или нет. Как я могу это сделать?

1 Ответ

0 голосов
/ 16 сентября 2018

опции для сериализации kotlin в json используют

  • Джексон (имеет модуль kotlin) https://github.com/FasterXML/jackson-module-kotlin

  • (моя собственная рекомендация) Собственная kotlinx-сериализация JetBrain, но она требует настройки gradle Gradle-плагин генерирует сериализаторы для вас, поэтому он может быть безотражательным и поддерживает также kotlin-native https://github.com/Kotlin/kotlinx.serialization

  • есть еще несколько реализаций kotlin для сериализации json (например, klaxon)

  • и даже больше в java (например, gson)

надеюсь, что это даст вам возможность начать и сравнить ваши варианты

и для kotlinx-сериализации тот же код

@Serializable
data class Skill(val skillType: SkillType)

enum class SkillType { A, B, C }

val json = JSON(indented = true)

println(json.stringify(Skill::class.serializer().list, listOf(Skill(SKillType.A))))

println(json.stringify(Skill(SkillType.B)))

val skill: Skill = json.parse("{\"skillType\": \"C\"}")

некоторые другие заметки, он позволяет json "без кавычек", поэтому удаляйте кавычки там, где это возможно, делает его намного более читабельным и человек, расходный материал

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