在Swift 4中将嵌套的JSON转换为Data对象

时间:2018-01-20 22:44:57

标签: json swift

我必须发送一个包含JSON对象的URLRequest作为其http-body(需要是Data类型)。

我的JSON看起来像这样:

let json: [String : Any] = [
        "to" : toDeviceToken,       // String
            "notification" : [
                "title" : title,    // String
                "body" : body,      // String
                "icon" : icon       // UIImage
            ],
            "data" : {
                // Add optional data here.
            }
        ]

我想将其转换为类型数据,以便将其放入URLRequest。

try JSONSerialization.data(withJSONObject: json, options: .prettyPrinted)

由于某种原因总是失败,也许是因为它是嵌套的JSON对象? 此外,JSONSerialization.isValidJSONObject(json)返回false。

将UIImage对象转换为这样的String对象时 UIImagePNGRepresentation(UIImage.appIcon!)?.base64EncodedString(),我收到错误提示'Invalid type in JSON write (_SwiftValue)'

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您的代码失败,因为它包含无法转换为JSON的数据。

有关支持数据类型的列表,请参阅JSONSerialization的文档。请注意,UIImage不是受支持的类型之一。

您需要使用其JPG或PNG表示的base64编码将UIImage转换为字符串。