【发布时间】:2019-12-21 05:32:11
【问题描述】:
我尝试使用它来构造结构和解码,但它只有在所有数据类型都与定义的相同时才有效
例如下面的代码可以正常工作:
{"key1": "stringValue", "key2": intValue, "key3": ["stringData1", "stringData2", "stringData3"]}
struct User: Decodable
{
var key1: String
var key2: Int
var key3: [String]
}
let decoder = JSONDecoder()
let decodedJsonData = try decoder.decode(User.self, from: data)
print(decodedJsonData)
如果key3包含不同的数据类型,我应该怎么解码?
{"key1": "stringValue", "key2": intValue, "key3": ["stringData1", IntData, FloatData]}
【问题讨论】:
-
最好的解决方案是在服务器上进行更改以发送一致的数据。
-
感谢@vadian 的回复,但实际上在服务器端无法更改,还有其他解决方案吗?
-
您可以编写一个自定义初始化程序来检查类型或将数组声明为具有关联类型的自定义枚举。在任何情况下,您都必须自定义解码过程。
-
“不同数据类型”的具体种类有哪些。你的意思是它将是一个“字符串或整数或浮点数”的数组?或者该列表中是否还有其他特定数据类型?您在此处给出的示例不是合法的 JSON,这使得回答问题变得困难。您能否提供合法的 JSON 以及您想到的结果结构类型?在 JSON 中,整数和浮点数之间没有区别。它们都只是“数字”。你打算有区别吗?你打算如何区分它们?能举个例子吗?
-
我想知道为什么标准库中没有通用类型来解组这样的常见任务
标签: ios swift json-deserialization codable decodable