JSONSerialization.jsonObject возвращает ноль - PullRequest
0 голосов
/ 09 октября 2018
var responseString = String(data: data, encoding: .utf8)
var responseDict: [AnyHashable : Any]? = nil
if let anEncoding = responseString?.data(using: String.Encoding(rawValue: String.Encoding.utf8.rawValue)) {
   responseDict = try! JSONSerialization.jsonObject(with: anEncoding, options: .mutableContainers) as? [AnyHashable : Any]
}  

responseString будет иметь вид:

[{\ ​​"message_id \": 1916, \ "in_app \": {\ "primary_color \": \ "# 333333 \", \ "secondary_color \": \ "# FFFFFF \", \ "позиция \": \ "0 \", \ "продолжительность \": \ "30 \", \ "истечение \": \ "2018-11-07T23: 17: 46.169-05: 00 \", \ "delay_minute \": \ "0 \", \ "delay_second \": \ "0 \", \ "сообщение \": \"Вот как будет выглядеть ваше сообщение! Введите текст сообщения в текстовой области и получите предварительный просмотр прямо здесь \", \ "data \": {}, \ "deeplinkurl \": \ "\", \ "attachment-url \ ": \" \», \ "название \": \ "\", \ "субтитров \": \ "\"}}, {\ "message_id \": 1920, \ "in_app \": {\ "primary_color \": \ "# 333333 \", \ "secondary_color \": \ "# FFFFFF \", \ "позиция \": \ "0 \", \ "продолжительность \": \ "30 \",\ "истечение \": \ "2018-11-08T03: 52: 15.404-05: 00 \", \ "delay_minute \": \ "0 \", \ "delay_second \": \ "0 \", \»message \ ": \" Вот как будет выглядеть ваше сообщение! Введите текст сообщения в текстовой области и получите предварительный просмотр прямо здесь \ ", \" data \ ": {}, \" deeplinkurl \ ": \" \", \" attachment-url \ ": \" \ ", \" title \ ": \" \ ", \" subtitle \ ": \" \ "}}]

responseDict выглядит как nil.
Соответствующий код Objective-C работал нормально.

1 Ответ

0 голосов
/ 09 октября 2018

Это прекрасно работает ...

let json = """
[{\"message_id\":1916,\"in_app\":{\"primary_color\":\"#333333\",\"secondary_color\":\"#ffffff\",\"position\":\"0\",\"duration\":\"30\",\"expiry\":\"2018-11-07T23:17:46.169-05:00\",\"delay_minute\":\"0\",\"delay_second\":\"0\",\"message\":\"This is what your message will look like! Type in your message in the text area and get a preview right here\",\"data\":{},\"deeplinkurl\":\"\",\"attachment-url\":\"\",\"title\":\"\",\"subtitle\":\"\"}},{\"message_id\":1920,\"in_app\":{\"primary_color\":\"#333333\",\"secondary_color\":\"#ffffff\",\"position\":\"0\",\"duration\":\"30\",\"expiry\":\"2018-11-08T03:52:15.404-05:00\",\"delay_minute\":\"0\",\"delay_second\":\"0\",\"message\":\"This is what your message will look like! Type in your message in the text area and get a preview right here\",\"data\":{},\"deeplinkurl\":\"\",\"attachment-url\":\"\",\"title\":\"\",\"subtitle\":\"\"}}]
""".data(using: .utf8)!

do {
    let object = try JSONSerialization.jsonObject(with: json, options: [])
    print(object)
} catch {
    print(error)
}

... но не используйте JSONSerialization ... объявляйте пользовательские объекты, которые представляют ваши данные, и используйте Decodable вместо

...