【问题标题】:I don't know how to parse this nested json我不知道如何解析这个嵌套的 json
【发布时间】:2019-10-07 17:30:38
【问题描述】:

我正在尝试使用解析此 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")

}

【问题讨论】:

  • 它是一个 JSONObject,里面有一个 JSONArrays presentationNodescollectiblesrecords

标签: android json kotlin


【解决方案1】:

如下创建模型类:

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
)

如果您想使用任何其他模型而不是 Any,那么您还必须创建此模型。希望这会帮助你。除此之外,您还可以使用 GSON 之类的 JSON 解析器库来解析 JsonObject。对于上述 JSON 对象,代码如下所示:

Gson().fromJson(json, Model::class.java)

【讨论】:

    【解决方案2】:

    只需在任何 Json 解析网站上单独过滤每个对象即可使用 Gson().fromJson(json, Model::class.java) 在你的代码中

    【讨论】:

      猜你喜欢
      • 2021-03-17
      • 2016-01-28
      • 2019-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多