ios - 类型不匹配(Swift.Dictionary,
问题描述
我的 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.String, Any>, 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<String, Any> 但找到了一个数组。",underlyingError: nil) )
解决方案
您正面临这个问题,因为在您的 json 响应中,您没有获取值或获取 struct mData 和 Mwidg 中存在的属性的 nil 值,为了使您的解决方案使 struct 属性成为可选的,这样即使您没有收到数据您的 json 响应代码将起作用。您粘贴的有问题的 json 未完成,您可能将某些对象设为 nil。
推荐阅读
- php - 将用户重定向到执行脚本的页面后,是否需要使用 exit()?
- python - SQLAlchemy has_any()
- regex - 如何使用 Firebase Firestore 安全规则处理用户输入数据验证?
- javascript - 猫鼬不加入两个系列
- python - RandomForestClassifier 中 min_sample_split 和 min_sample_leaf 的作用是什么?
- ruby - Ruby Fiddle:结构内的嵌套联合
- php - cURL:从 HTTPS 到 HTTP 的请求被拒绝连接
- database - 微服务:微服务背后的数据库如何组织
- excel - 通过 VBA 将公式添加到单元格中
- swift - 正确显示特殊字符