JSON编码器返回Optional()

时间:2018-05-15 18:15:20

标签: json swift encoding

我正在尝试编码我的jsonData。一切正常,只有一个例外 - 我收到的是输出Optional(my_json_string)。但我希望只收到my_json_string

当我将req.httpBody = jsonData更改为req.httpBody! = jsonData时,我收到错误。

do {
    let jsonData = try encoder.encode(self)
    let jsonString = String(data: jsonData, encoding: .utf8)
    req.httpBody = jsonData
    print ("httpBody is: ", jsonString)
} catch {
    //TODO:error handling
}

如何正确执行此操作并从可选中解包我的JSON字符串?

1 个答案:

答案 0 :(得分:4)

您的代码没有问题,您编码的JSON不是可选的。您看到的问题是您正在打印String(data:, encoding: )初始值设定项的返回值,这是一个可用的初始化程序(如果您提供给它的编码错误,则返回nil),因此{{1在print语句中。

Optional始终生成有效的UTF-8编码JSONEncoder,因此您可以通过执行

安全地强制解包初始化程序的返回值
String