swift 3,JSON,写入时顶级类型无效

时间:2016-11-06 19:07:06

标签: ios json swift3

我有两个完全json的对象,一个是从一个函数创建的,另一个是硬编码的,硬编码的是有效的,另一个没有#(它总是抱怨错误invalid top-level type,很奇怪。任何提示?Tks

let myData = self.dailyMileage?.toDictionary()

let directData = ["orgId" : self.orgId, "driverId" : self.driverId, "date" : Utils.getTodaysDate() ] as [String : Any]

//this won't work unless I substitute myData with directData                        
let jsonData = try JSONSerialization.data(withJSONObject: myData, options: .prettyPrinted)

//this is the function that produces myData, and nothing is nil
 public func toDictionary() -> [String : Any] {
    let dict = [ "orgId" : orgId , "driverId": driverId, "date" : date] as [String : Any]
    return dict
}

1 个答案:

答案 0 :(得分:0)

JSONSerialization,如文档中所示:

  

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

     

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

     

所有字典键都是NSString的实例。数字不是NaN或无穷大。

     

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

  1. 我认为来自该函数的那个​​可能有一个NSDate对象而不是NSString对象。

  2. 另一个原因是因为您的myData对象是可选的。 JSONSerialization可能会出现错误,因为该对象是可选的。

  3. 请检查是否是由于这两个原因之一。随意建议编辑以使其更好。