解析以数字作为关键字段的 json 对象?

parsing json object with number as its key fields?

我正在尝试将 json 解析为 kotlin 对象,但问题是它的关键字段是数字,不知道如何解析它们,我已经尝试序列化名称但仍然面临问题。

json 响应如下所示:

{
    "Id": [{
            "1": {
                "name": "name1",
                "class": "11a"
            }
        },
        {
            "2": {
                "name": "name2",
                "class": "11b"
            }
        }
    ]
}

我正在使用 gson,我想做的主要事情是将这个数字字段存储为一些其他字符串对象。

您可以将它们解析为地图列表,然后 "map" 将它们解析为您的数据 类:

    val input = """{
    "Id": [{
            "1": {
                "name": "name1",
                "class": "11a"
            }
        },
        {
            "2": {
                "name": "name2",
                "class": "11b"
            }
        }
    ]
}"""

    val gson = Gson()
    val parsed: Map<String, List<Map<String, Any>>> = 
        gson.fromJson(input, (object : TypeToken<Map<String, List<Map<String, Any>>>>(){}).type)
    println(parsed["Id"]?.get(0)?.get("1")) // {name=name1, class=11a}

不过,它会有一些令人讨厌的通用签名。

如果您使用的是 Kotlin,请查看 Klaxon,它将改善您的体验。