[英]Getting error when try to parsing JSON Response with quotation marks
我有這樣的API的JSON Respose:
[{
"id":"6",
"name":"Лилия",
"description":"Сауна "Лилия" ждёт всех тех, кто хочет отдохнуть от суеты в специально созданной для этого атмосфере тепла и уюта. В Вашем распоряжении 3 жаркие сауны, комнаты отдыха, 3 бассейна (один длиной 14 м), в котором Вы можете прекрасно поплавать. Для Вашего удобства всегда в продаже берёзовые и дубовые веники. При желании можно заказать блюда европейской кухни и напитки прямо в сауну. Рады видеть Вас в нашей сауне круглосуточно! Стоимость саун от 350 руб./час - более подробную информацию уточняйте у администратора"
}]
試圖將其解碼到我的模型但是得到錯誤:
dataCorrupted(Swift.DecodingError.Context(codingPath:[],debugDescription:“給定數據無效JSON。”,underlyingError:可選(錯誤域= NSCocoaErrorDomain Code = 3840“字符58周圍形成不良對象。”UserInfo = {NSDebugDescription =字符58周圍形成不良的對象。})))
我的代碼:
class NetworkService {
var companies = [Company]()
let session = URLSession(configuration: .default)
func getCompanies(stringUrl: String) {
guard let url = URL(string: stringUrl) else { return }
let task = session.dataTask(with: url) { (data, response, error) in
guard let dataResponse = data, error == nil else {
print(error?.localizedDescription ?? "Response Error")
return
}
do {
self.companies = try JSONDecoder().decode(Array<Company>.self, from: dataResponse)
} catch let parsingError {
print("error", parsingError)
}
}
task.resume()
}
}
模型:
struct Company: Codable {
let name: String
let description: String?
}
糾正json(你需要在任何"
內部description
的鍵值"
之前添加轉義\\
)
[{
"id": "6",
"name": "Лилия",
"description": "Сауна \" Лилия \" ждёт всех тех, кто хочет отдохнуть от суеты в специально созданной для этого атмосфере тепла и уюта. В Вашем распоряжении 3 жаркие сауны, комнаты отдыха, 3 бассейна (один длиной 14 м), в котором Вы можете прекрасно поплавать. Для Вашего удобства всегда в продаже берёзовые и дубовые веники. При желании можно заказать блюда европейской кухни и напитки прямо в сауну. Рады видеть Вас в нашей сауне круглосуточно! Стоимость саун от 350 руб./час - более подробную информацию уточняйте у администратора"
}]
嘗試
let str = String(data:data, encoding: .utf8)
let actual = str.replacingOccurrences(of: "Сауна \" Лилия \"", with: "Сауна \\" Лилия \\"")
然后改變這個
self.companies = try JSONDecoder().decode(Array<Company>.self, from: Data(actual.utf8))
Попытаюсья:
import Foundation
let badJsonString = "{\"id\":\"2\",\"description\":\"any \"bad\" description\"}"
let okJsonString = badJsonString.replacingOccurrences(of: #"(?<= )\"|\"(?= )"#, with: "'", options: .regularExpression)
let jsonData = try JSONSerialization.jsonObject(with: Data(okJsonString.utf8))
print(jsonData)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.