У меня проблема с синтаксическим анализом Codable ... это мой пример кода:
class Test: Codable {
let resultCount: Int?
let quote: String?
}
var json = """
{
"resultCount" : 42,
"quote" : "My real quote"
}
""".data(using: .utf8)!
var decoder = JSONDecoder()
let testDecoded = try! decoder.decode(Test.self, from: json)
Здесь все работает как положено, и объект Test создан.
Теперь моя серверная часть отправляет мне строку цитаты с цитатой посередине ... в этой форме (обратите внимание на \ "real \"):
class Test: Codable {
let resultCount: Int?
let quote: String?
}
var json = """
{
"resultCount" : 42,
"quote" : "My \"real\" quote"
}
""".data(using: .utf8)!
var decoder = JSONDecoder()
let testDecoded = try! decoder.decode(Test.self, from: json)
Во втором случае декодеру не удается создать объект ... и это мое сообщение об ошибке:
данные UserInfo = {NSDebugDescription = Нет строкового ключа для значения в объекте вокруг символа 4.})))
Есть ли способ решить эту проблему?
"My \\"real\\" quote"
- person Martin R   schedule 04.01.2019\\
в строковом литерале, чтобы избежать"
. С такой строкой ваш код работает нормально. Ваш бэкэнд отправляет настоящий JSON с экранированными кавычками? Вы должны поместить фактический JSON в файл, чтобы обойти двойное экранирование, которое вам нужно сделать в строковых литералах, и протестировать его, чтобы имитировать бэкэнд. - person Dávid Pásztor   schedule 04.01.2019