【问题标题】:getting nil value while decoding the data在解码数据时获得零值
【发布时间】:2019-12-21 12:15:54
【问题描述】:

api 的响应。

["data": {
email = "sm@bl.com";
firstName = ll;
lastName = "mm!";
role = user;
token = "Bearer xxxxxxxxx";
}, "status": 200, "message": Record Sucessfully Inserted.]

根据我创建的响应,结构是

struct NewUser: Codable {
var message: String?
var data: NewUserData?
var status: Int?

}

struct  NewUserData: Codable {
var email: String?
var firstName: Int?
var lastName: String?
var role: String?
var token: String?
}

如果我没有使用 JSONDecoder 正在工作的文件,如下面的代码

let json = try JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! Dictionary<String, Any>
            print(json)

它工作正常,但当我尝试遵循 JSONDecoder

let jsondecode = JSONDecoder()
let newUserResponse = try? jsondecode.decode(NewUser.self, from: data!)
print(newUserResponse)

newUserResponse 打印 nil 但它应该打印一些响应。找不到问题。

【问题讨论】:

  • “消息”响应看起来很有趣。为什么字符串上没有引号? “记录成功插入。”此外,响应是一个数组而不是字典。这真的是响应数据吗?
  • 是的,看起来不对。但问题是 firstName 应该是 string 而不是 int。

标签: ios swift swift4.2


【解决方案1】:

查看名字。 (顺便说一句,这就是答案)。

为了调试,打印原始 JSON 数据,而不是处理它的结果。您声称 API 的响应不是有效的 JSON。

并且使用“.allowFragments”表示你一直在盲目地复制一些代码而没有理解它。如果您不同意,那么您可以发布它的作用以及您使用它的原因。

【讨论】:

  • 是的,我是在复制代码。仅出于测试目的运行代码。无论如何感谢您的回复并指出问题...
猜你喜欢
  • 1970-01-01
  • 2022-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-07
相关资源
最近更新 更多