JSON-кодировщик возвращает Optional () - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь закодировать мои данные 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 голосов
/ 15 мая 2018

Нет проблем с вашим кодом, ваш кодированный JSON не является дополнительным.Проблема, которую вы видите, заключается в том, что вы печатаете возвращаемое значение инициализатора String(data:, encoding: ), который является неисправным инициализатором (он возвращает nil, если кодировка, указанная вами, неверна), следовательно, Optional в операторе печати.

JSONEncoder всегда создает действительный кодированный в кодировке UTF-8 String, так что вы можете безопасно принудительно развернуть возвращаемое значение инициализатора, выполнив

let jsonString = String(data: jsonData, encoding: .utf8)!
...