Я не знаю, как разобрать этот вложенный JSON - PullRequest
1 голос
/ 07 октября 2019

Я пытаюсь проанализировать этот JSON с помощью. Однако я не знаю, как разобрать «детей». Как мне сопоставить его с классом?

Я создал класс для анализа "displayProperties", но я не знаю, как анализировать "children"

{
  "displayProperties": {
    "description": "",
    "name": "Les Ténèbres",
    "icon": "/common/destiny2_content/icons/39ba3c78d0ad06c0728374d591c65821.png",
    "hasIcon": true
  },
  "originalIcon": "/common/destiny2_content/icons/39ba3c78d0ad06c0728374d591c65821.png",
  "rootViewIcon": "/common/destiny2_content/icons/39ba3c78d0ad06c0728374d591c65821.png",
  "nodeType": 1,
  "scope": 1,
  "objectiveHash": 4168198558,
  "children": {
    "presentationNodes": [
      {
        "presentationNodeHash": 655926402
      },
      {
        "presentationNodeHash": 2082711113
      },
      {
        "presentationNodeHash": 2474271317
      }
    ],
    "collectibles": [],
    "records": []
  }
}
abstract class DestinyObject(json : String) : JSONObject(json){

    fun optDisplayProperties() : DisplayProperties{
        val json_object : DisplayProperties = this.optJSONObject("displayProperties") as DisplayProperties
        return json_object
    }
}
class DisplayProperties(json : String) : JSONObject(json){
    val name = this.optString("name")
    val icon = this.optString("icon")
    val description = this.optString("description")

}

Ответы [ 2 ]

0 голосов
/ 08 октября 2019

Просто отфильтруйте каждый объект отдельно на любом веб-сайте анализа Json и можете использовать Gson().fromJson(json, Model::class.java) в своем коде

0 голосов
/ 07 октября 2019

Создайте свой класс модели, как показано ниже:

class Model(
    val displayProperties: DisplayProperties,
    val originalIcon: String,
    val rootViewIcon: String,
    val nodeType: String,
    val scope: String,
    val objectiveHash: Long,
    val children: Children
)

class Children(
    val presentationNodes: List<Any>,
    val collectibles: List<Any>,
    val records: List<Any>
)

class DisplayProperties(
    val description: String,
    val name: String,
    val icon: String,
    val hasIcon: Boolean
)

Если вы хотите использовать любую другую модель вместо Любой , то вам также необходимо создать эту модель. Надеюсь, что это поможет вам. Кроме того, вы можете использовать библиотеку JSON Parser, например GSON , для анализа JsonObject. Для вышеупомянутого объекта JSON код выглядит так:

Gson().fromJson(json, Model::class.java)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...