将 swift 数组转换为对象以进行 json 序列化

Posted

技术标签:

【中文标题】将 swift 数组转换为对象以进行 json 序列化【英文标题】:Converting swift array into object for json serialization 【发布时间】:2015-10-09 16:00:48 【问题描述】:

以下代码在 Swift 2.0 中无法编译

var eventsIds : [CalendarEventLink?] = [CalendarEventLink?](count: 5, repeatedValue: nil)
var data = try NSJSONSerialization.dataWithJSONObject(eventsIds, options: [])

我收到错误:

'[CalendarEventLink?]' 不能转换为'[AnyObject]'

如何快速将数组序列化为 json?

【问题讨论】:

[CalendarEventLink?](count: 5, repeatedValue: nil) 创建一个 5 x nil: [nil, nil, nil, nil, nil] 的数组,但您不能将 nil 编码为 JSON。 您必须能够解包它才能使其可序列化。您可以使用if...let 尝试它,以确定它是否不是可选的。 所以基本上,你说swift数组的元素必须不是可选的才能用作json对象? 【参考方案1】:
var eventsIds : [CalendarEventLink] = []
var data = try NSJSONSerialization.dataWithJSONObject(eventsIds, options: [])

如上面的 cmets 所述,您不能将可选项数组发送到 [AnyObject]

【讨论】:

以上是关于将 swift 数组转换为对象以进行 json 序列化的主要内容,如果未能解决你的问题,请参考以下文章

swift:将传入的 json 数组转换为字典和对象

Swifty JSON:将 JSON 数组中的对象分层列表转换为分层 Swift 对象

如何将 JSON 转换为 Swift Dictionary 以进行 HTTP POST

如何将 Swift 数组转换为字符串?

在 Swift 4 中将 Json 对象转换为数组格式

将 NSData 转换为 JSON 对象数组