问题描述
这是我尝试使用 Swift Decodable 解码的一段 json 代码:
var json = """
{
"orders":[
{
"extra":"{\"desired_pick_up_time\":\"ASAP\"}"
}
]
}
"""
如您所见,包含在 :
中的额外键的值- 大括号
- 转义字符
- 双引号。
这使得解码非常棘手。
这是我为了解码而编写的模型:
struct Welcome: Decodable {
let orders: [Order]
}
// MARK: - Order
struct Order: Decodable {
let extra: String
}
当我尝试解码时返回一个 nil 值:
let jsonData = json.data(using: .utf8)!
let decoder = JSONDecoder()
do {
let welcome = try? decoder.decode(Welcome.self,from: jsonData)
print(welcome)
} catch {
print(error)
}
解决方法
首先 - 正如评论中提到的 - JSON 中的反斜杠必须使用多行字符串文字语法进行转义
axios.interceptors.request.use(config=>{
//returns correct base but not changed url
console.log(`the page is ${config.params.page} the url is {config.url}`);
return config;
},error=>{
return Promise.reject(error);
});
键 let json = """
{
"orders":[{"extra":"{\\"desired_pick_up_time\\":\\"ASAP\\"}"}]
}
"""
的所有值中的第二个是另一个需要在第二级解码的 JSON 字符串。这需要实现 extra
init(from decoder