gpt4 book ai didi

ios - 如果字符串值之一包含 ("),则 Swift Codable 无法解码

转载 作者:行者123 更新时间:2023-11-30 11:21:16 27 4
gpt4 key购买 nike

这是一个示例字符串,我尝试通过 JSONDecoder 将其解码为相应的对象。

let errorString = """
{
"ErrorCode":"5500",
"ErrorMessage":"Not \"At all\" supported"
}
"""

对象:

struct FErrorResponse: Decodable {
let errorCode: String
let errorMessage: String

enum CodingKeys: String, CodingKey {
case errorCode = "ErrorCode"
case errorMessage = "ErrorMessage"
}
}

解码代码:

let json = errorString.data(using: String.Encoding.utf8)!
let decoder = JSONDecoder()

do {
let errorRes = try decoder.decode(FErrorResponse.self, from: json)
print("Code : \(String(describing: errorRes.errorCode)), Message : \(String(describing: errorRes.errorMessage))")
if errorRes.errorCode == "5500" {
print("Super error")
}
} catch let error {
print("Error >> \(error)")
}

显示错误:

Error >> dataCorrupted(Swift.DecodingError.Context(codingPath: [], debugDescription: "The given data was not valid JSON.", underlyingError: Optional(Error Domain=NSCocoaErrorDomain Code=3840 "Badly formed object around character 43." UserInfo={NSDebugDescription=Badly formed object around character 43.})))

如果我的输入字符串如下,则它可以正常工作,

let errorString = """
{
"ErrorCode":"5500",
"ErrorMessage":"Not supported"
}
"""

注意:在线 Json 格式化工具可以正确解析输入字符串。如果我什至使用 ObjectMapper 的工具,它会正确解析。仅当我使用 Codable 进行解码时,才会出现上述错误。

-> 这只是为了突出实际问题而编写的示例代码。从服务器接收到的字符串数据在响应中包含类似的值(周围包含“的字符串已正确转义)。

请帮忙。

最佳答案

你需要逃脱\

let str = """
{
"ErrorCode":"5500",
"ErrorMessage":"Not \\"At all\\" supported"
}
"""

关于ios - 如果字符串值之一包含 ("),则 Swift Codable 无法解码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51245730/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com