typeMismatch(Swift.Dictionary<Swift.String, Any>,

Posted

技术标签:

【中文标题】typeMismatch(Swift.Dictionary<Swift.String, Any>,【英文标题】: 【发布时间】:2021-03-17 15:09:55 【问题描述】:

我的 JSON :

'''

  "status": 200,
  "data": 
    "widgets": [
      
        "type": "small_half_slider",
        "data": 
          "banners": [
            
              "id": 42765,
              "image": "",
              "title": "!",
              "is_ad": false,
              "url": 
                "url": "",
                "page": "web_link",
                "params": 
                  "url": ""
                ,
                "queries": []
              ,
              "video": "",
              "description": "",
              "bullet_points": []
            
'''

和我的结构:

'''
import Foundation

struct mainPage:Codable
  var  status:Int?
  var  data: mData?


struct mData:Codable 
    var widgets:[Mwidg]


struct Mwidg:Codable

    var type:String
    var data:wdata


struct wdata:Codable
   var show_type:String?
   var banners:[bannerData]?


struct bannerData:Codable 
    var id:Int?
    var image:String?
    var title:String?
    var is_ad:Bool?
    var url:urlData?
    var video:String?
    var description:String?


struct urlData:Codable 
    var url:String?
    var page:String?
    var params:paramsData?
    var queries:[queriesData]?
  

struct paramsData:Codable 
    var url:String?


struct queriesData:Codable 

 


'''

然后我遇到了这个错误:

typeMismatch(Swift.Dictionary, Swift.DecodingError.Context(codingPath: [CodingKeys(stringValue: "data", intValue: nil), CodingKeys(stringValue: "widgets", intValue: nil) , _JSONKey(stringValue: "Index 1", intValue: 1), CodingKeys(stringValue: "data", intValue: nil)], debugDescription: "期望解码 Dictionary 但找到了一个数组。", 底层错误:无))

【问题讨论】:

嗯,显然数组widgetssecond 元素中的键data 的值类型是数组而不是对象。检查您的 JSON。它的价值是 ...[...] 吗? 将您的 JSON 粘贴到 quicktype.io 中,看看它构建了什么结构,看看您是否会帮助找到错误的地方。 【参考方案1】:

您正面临这个问题,因为在您的 json 响应中,您没有获取值或获取 struct mData 和 Mwidg 中存在的属性的 nil 值,为了使您的解决方案使 struct 属性成为可选的,即使您没有在您的 json 响应中接收数据,代码将起作用。您粘贴的有问题的 json 未完成,您可能将某些对象设为 nil。

【讨论】:

以上是关于typeMismatch(Swift.Dictionary<Swift.String, Any>,的主要内容,如果未能解决你的问题,请参考以下文章

typeMismatch(Swift.Dictionary<Swift.String, Any>,

org.springframework.validation.BeanPropertyBindingResult: 1 errors

argument type mismatch异常

springboot 提交时间字符串报错 Failed to convert property value of type ‘java.lang.String‘ to required ‘Date‘

springboot 提交时间字符串报错 Failed to convert property value of type ‘java.lang.String‘ to required ‘Date‘

springboot 提交时间字符串报错 Failed to convert property value of type ‘java.lang.String‘ to required ‘Date‘