2017-09-24 11 views
2

你如何处理从JSON可编码结构它可以是一个空字符串或一个int的领域?我尝试使用任何数据类型,但不符合可编码。我认为,如果它没有值,那么它返回一个空字符串,否则返回一个int。我正在使用Swift 4和XCode 9.在此先感谢如何设计一个可编码JSON字段,它可以是一个空字符串或int

+0

这是什么领域的在你的雨燕类型? 'Int?' –

+0

是的,我想为该字段使用int。如果它是一个空字符串,我想将其默认为0,如果可能或零。 –

回答

2

我真的会建议更改该Web服务以始终返回值(如果没有整数类型的值,不要返回任何该键)。

但如果你坚持这样的设计,你会写自己的init(from:)其优雅的处理故障解析整数值。例如: -

struct Person: Codable { 
    let name: String 
    let age: Int? 

    init(from decoder: Decoder) throws { 
     let values = try decoder.container(keyedBy: CodingKeys.self) 
     name = try values.decode(String.self, forKey: .name) 
     do { 
      age = try values.decode(Int.self, forKey: .age) 
     } catch { 
      age = nil 
     } 
    } 

} 

我还建议不要使用0为“未提供整数值”中的标记值。这是可选项。

+1

感谢您的帮助。我想我将不得不走很长一段路,因为我无法更改服务器。 –

+0

哈哈。是的,我们都在那里,背负着一些其他人管理的可疑界面。 – Rob

相关问题