Десериализовать многомерный массив из JSON - PullRequest
0 голосов
/ 22 сентября 2018

Мне нужна помощь в десериализации из строки JSON следующей матрицы

[[0,241680,1504951,608814],[242011,0,1422310,526173],[1509111,1427078,0,929523],[607952,525919,922264,0]]

Проблема в том, что я понятия не имею, какую структуру данных использовать в Kotlin для этого.

Любые идеи?

Пока я пробовал следующее:

    private fun createMatrix(json: String, mapper: ObjectMapper): List<List<Long>> {
        val typeFactory = mapper.typeFactory
        return mapper.readValue(json, typeFactory.constructCollectionType(List::class.java, IntArray::class.java))
    }

1 Ответ

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

Джексон позволяет вам указывать ссылки типа намного лучше, чем аномальные объекты

val mapper = ObjectMapper()
    .registerModule(KotlinModule())

fun main(args: Array<String>) {
    val list = testList("[[0,241680,1504951,608814],[242011,0,1422310,526173],[1509111,1427078,0,929523],[607952,525919,922264,0]]")
    val array = testArray("[[0,241680,1504951,608814],[242011,0,1422310,526173],[1509111,1427078,0,929523],[607952,525919,922264,0]]")
    println(list)
    println(array)
}

fun testList(text: String): List<List<Int>> {
    return mapper.readValue(text, object : TypeReference<List<List<Int>>>() {} )
}

fun testArray(text: String): Array<Array<Int>> {
    return mapper.readValue(text, object : TypeReference<Array<Array<Int>>>() {} )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...