Swift:用未知键解码 JSON? [复制]
Posted
技术标签:
【中文标题】Swift:用未知键解码 JSON? [复制]【英文标题】:Swift: decode JSON with unknown keys? [duplicate] 【发布时间】:2021-10-07 08:29:44 【问题描述】:我想解码一个简单的 JSON 文件,问题是顶部的键都不同:
"pikachu":
"name": "Pikachu",
"number": 25
,
"bulbasaur":
"name": "Bulbasaur",
"number": 1
,
"caterpie":
"name": "Caterpie",
"number": 10
到目前为止我有这个模型:
struct Pokemon: Decodable
//var key: ?
var pokemonInfo: PokemonInfo
struct PokemonInfo: Decodable
var name: String
var number: Int
但是我不知道如何设置Pokemon
的密钥,以及作为JSONDecoder
的参数传递的内容。
let decodedResult = try JSONDecoder().decode([Pokemon].self, from: data)
typeMismatch(Swift.Array, Swift.DecodingError.Context(codingPath: [], debugDescription: "本应解码 Array 但找到了字典。", underlyingError: nil))
在这里做什么?
感谢您的帮助
【问题讨论】:
【参考方案1】:JSON 中没有数组也没有键 pokemonInfo
。
由于密钥实际上无关紧要,最简单的解决方案是解码[String:PokemonInfo]
并将其映射到values
let decodedResult = Array(try JSONDecoder().decode([String:PokemonInfo].self, from: data).values)
【讨论】:
以上是关于Swift:用未知键解码 JSON? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Swift 中解析 JSON。 “应解码 Dictionary<String, Any>,但找到了一个数组。” [复制]