Парсинг JSON не проходит

json

#1

Всем привет.
По запросу с сервера возвращается JSON:

[ { “id”: “2”,
“name”: “Some company name”,
“description”: “Some company name приглашает вас в гости. \r\nSome company name - гриль - бар с живой музыкой.”}]

Для работы с такими объектами есть структура

struct CompanyItemDetailes: Decodable {
let id: String
let name: String
let description: String
}

далее по классике
let companyInfo = try JSONDecoder().decode([CompanyItemDetailes].self, from: data!)

и вот тут появляется ошибка
The data couldn’t be read because it isn’t in the correct format.

Как я выяснил ошибка появляется только тогда, когда в поле description есть форматирование
Если в description простой текст то всё работает.

Как это поправить? Можно ли как-то заставить Swift воспринимать поле с форматированным текстом? Или возможно как-то вообще убрать всё форматирование?


#2

Попробуйте заэкранировать:

var data = """
[{
    "id": "2",
    "name": "Some company name",
    "description": "Some company name приглашает вас в гости. \n\r Some company name - гриль - бар с живой музыкой."
}]
""".data(using: .utf8)!

while let range = data.range(of: "\n\r".data(using: .utf8)!) {
    data.replaceSubrange(range, with: "\\n\\r".data(using: .utf8)!)
}

struct CompanyItemDetailes: Decodable {
    let id: String
    let name: String
    let description: String
}

do {
    let companyInfo = try JSONDecoder().decode([CompanyItemDetailes].self, from: data)
    print(companyInfo)
} catch {
    print(error)
}