使用Swift将字符串JSON响应转换为布尔值4可解码
问题描述:
我重构了以前使用过第三方JSON解析器的一些项目,并且遇到了将布尔值作为字符串返回的愚蠢网站。使用Swift将字符串JSON响应转换为布尔值4可解码
这是从JSON响应的相关片段:
{
"delay": "false",
/* a bunch of other keys*/
}
我对解码结构是这样的:
struct MyJSONStruct: Decodable {
let delay: Bool
// the rest of the keys
}
我将如何转换返回的JSON响应转换为布尔字符串在Swift 4中匹配我的结构?虽然this post很有帮助,但我无法弄清楚如何将字符串响应转换为布尔值。
答
基本上,你必须写一个自定义的初始化,但是如果有很多好键,但只有一个从类型到另一种映射计算的属性可能是有用的
struct MyJSONStruct: Decodable {
var delay: String
// the rest of the keys
var boolDelay : Bool {
get { return delay == "true" }
set { delay = newValue ? "true" : "false" }
}
}
覆盖'初始化(解码器:解码器)'并手动处理所有的解码。我说全是因为你不能解码某些字段而不是其他字段。 – Brandon
哎。我有一些嵌套结构的〜20个键,全部用于一个布尔值。 – Adrian
比较https://stackoverflow.com/q/44594652/2976878 – Hamish