Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/109.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果字符串在其中一个值中包含(";),则Swift Codable无法解码_Ios_Json_Swift_Codable - Fatal编程技术网

Ios 如果字符串在其中一个值中包含(";),则Swift Codable无法解码

Ios 如果字符串在其中一个值中包含(";),则Swift Codable无法解码,ios,json,swift,codable,Ios,Json,Swift,Codable,这是一个示例字符串,我正试图通过JSONDecoder将其解码为相应的对象 let errorString = """ { "ErrorCode":"5500", "ErrorMessage":"Not \"At all\" supported" } """ 对象: struct FErrorResponse: Decodable { let errorCode: String let errorMessage: String enum CodingK

这是一个示例字符串,我正试图通过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"
    }
"""
如果您执行
“ErrorMessage”:“完全不\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\