парсинг json объекта с номером в качестве его ключевых полей? - PullRequest
1 голос
/ 19 апреля 2020

Я пытаюсь разобрать json в kotlin объекты, но проблема в том, что его ключевые поля являются числами, любая идея, как их анализировать, я пробовал сериализованное имя, но все еще сталкиваюсь с проблемой.

Ответ json выглядит следующим образом:

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

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

1 Ответ

0 голосов
/ 19 апреля 2020

Вы можете разобрать их в список карт, а затем вместо этого «сопоставить» их с вашими классами данных:

    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}

Однако у него будет какая-то неприятная общая c подпись.

Если вы работаете с Kotlin, взгляните на Клаксон , это улучшит ваш опыт.

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