【发布时间】:2020-01-31 04:15:18
【问题描述】:
根据我的要求,我有两种类型的响应:第一种:
{
"status": "success"
"data": {
"user_id": 2,
"user_name": "John"
}
}
第二个是:
{
"status": "error",
"data": [],
}
我正在使用这样的结构:
struct ValyutaListData:Decodable {
let status: String?
let data: [String]?
}
但是如果响应是第一类响应,那么就会发生错误。因为在第一个类型响应数据不是数组。它是 Json 对象。然后我使用这样的结构:
struct ValyutaListData:Decodable {
let status: String?
let data: Persondata?
}
struct Persondata: Decodable{
let user_id: Int?
let user_name: String?
}
如果响应是第二种响应,则会发生错误。动态类型的 JSON 应该使用什么样的结构?谢谢。
【问题讨论】:
-
为什么不让
data的值始终是单个字典的数组?那么类型总是一个数组,如果没有数据,它就只是一个空数组。如果有数据,那么你可以访问data的数组中的第一个元素,它会是一个字典吗? -
@DavidChopin 我不写服务。后端开发者是另一个开发者。
-
没有返回数据时,值是否只是一个数组?
-
@DavidChopin 我可以告诉后端开发人员更正 json 格式。但我想为这个问题找到解决方案:)
-
:) 这是一个很好的反对意见。我只是想保持它非常简单。然后写
init(from:)是更好的方法。
标签: json swift struct decodable