可解码字典 [String : Any] [重复]

Posted

技术标签:

【中文标题】可解码字典 [String : Any] [重复]【英文标题】:Decodable Dictionary [String : Any] [duplicate] 【发布时间】:2018-05-18 19:41:55 【问题描述】:

我正在尝试通过 Swifts Decodable 类使用 JSON Rest API。 API 包含一个字典,其中键为字符串,值有时是 String,有时是 Bool。我已经为 JSON 的所有子树创建了结构,但不知道如何使用字符串 OR Bool 值的字典。

图像参数(如下)是 [String : String] OR [String : Bool]

struct Item:Decodable 
    var id: String
    var name: String
    var price: String
    var priceIcon: String
    var priceIconLink: String
    var images: [String : String]
    var rarity: String
    var type: String
    var readableType: String

试过了,但它不符合 Decodable。

var images: [String : Any]

JSON 响应示例

"images": 
                "icon": "https://image.fnbr.co/emote/5ae8a0edf3d31bd9cac5b80d/icon.png",
                "png": "https://image.fnbr.co/emote/5ae8a0edf3d31bd9cac5b80d/png.png",
                "gallery": "https://image.fnbr.co/emote/5ae8a0edf3d31bd9cac5b80d/gallery.jpg",
                "featured": false
            

【问题讨论】:

【参考方案1】:

解决了!在解析之前,我对 JSON 字符串进行了一些预处理。将所有 false 替换为空字符串 ("")。

解决方案:

dataString.replacingOccurrences(of: ":false", with: ":\"\"", options: .literal, range: nil)

【讨论】:

以上是关于可解码字典 [String : Any] [重复]的主要内容,如果未能解决你的问题,请参考以下文章

错误:“应解码 Dictionary<String, Any>,但找到了一个数组。” ——但我还没有定义字典? [复制]

Swift4 JSONDecoder 期望解码 Dictionary<String, Any> 但找到了一个数组 [重复]

无法转换类型“字典<String, Any>?”的值?到预期的参数类型“数据”

解码错误:typeMismatch“预期解码 Array<Any> 但找到了字典。”

预期解码 Array<Any> 但找到了字典

Swift 4 JSON Parsing(预期解码 Array<Any> 但找到了字典)