如何解决无法使用 Swift Decodable 解码包含在大括号、转义字符和双引号内的 json 字符串值
这是我尝试使用 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。