从 JSON 反序列化多维数组

Posted

技术标签:

【中文标题】从 JSON 反序列化多维数组【英文标题】:Deserialize Multidimensional Array from JSON 【发布时间】:2019-02-26 08:40:34 【问题描述】:

我需要帮助从 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】:

Jackson 允许您将类型引用指定为更好的异常对象

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>>>()  )

【讨论】:

以上是关于从 JSON 反序列化多维数组的主要内容,如果未能解决你的问题,请参考以下文章

使用 ProtoBuf-Net,如何(反)序列化多维数组?

C# JSON 反序列化:如何从 JSON 对象数组中获取值 [重复]

在 C# 中从 JSON 反序列化数组

有时是数组有时是对象时反序列化JSON

从 XML 文档创建的 Json 反序列化到 POCO 不适用于数组

如何反序列化 json 数组?