在Swift中将保存日期的字典转换为JSON

时间:2015-08-29 19:29:26

标签: json swift nsdate

我有一个相当庞大且复杂的NSManagedObject,我在我的应用程序中操作并以JSON形式发送回服务器。我的计划是在我的应用程序中执行我需要做的事情,将对象转换为字典,然后在调用NSJSONSerialization.dataWithJSONObject之后发送它(我还尝试使用SwiftyJSON,我认为做的事情或多或少都是一样的)。这一切都很好,直到我需要包括一些日期。

基本上我所见过的所有文档都说序列化与某些对象类型列表完全一致,但不包括NSDate。可悲的是,我需要一些约会。我应该注意到我正在处理一个字典词典,这些字典可能会在树上上下分散日期,所以如果我递归地将它们全部转换成字符串,我将不得不做很多事情。复制到NSMutable词典。当然,这是一种更简单的方法吗?我对Swift和iOS开发有点新意,我不能帮助我感觉我做错了什么,或者我有这个问题的内置解决方案,我只是失踪。我不能成为第一个想要以JSON发回日期的人。任何帮助将不胜感激。

谢谢, 亚历

1 个答案:

答案 0 :(得分:2)

Apple NSJSONSerialization Class Reference说;

  

您使用NSJSONSerialization类将JSON转换为Foundation   对象并将Foundation对象转换为JSON。

     

可能转换为JSON 的对象必须具有以下内容   属性:

     

顶级对象是NSArray或NSDictionary。

     

所有对象都是NSString,NSNumber,NSArray的实例,   NSDictionary,或NSNull。

     

所有字典键都是NSString的实例。

     

数字不是NaN或无穷大。

     

其他规则可能适用。调用 isValidJSONObject:或尝试a   转换是判断给定对象是否可以的明确方式   转换为JSON数据。

我认为您应该将日期转换为String并将它们添加到您的Dictionary中。但它说;其他规则可能适用。调用 isValidJSONObject:只是尝试使用NSDate对象创建一个字典,如果它返回true则调用isValidJSONObject它应该可以工作。