【发布时间】:2019-05-24 17:04:46
【问题描述】:
在使用 SWIFT 的 iPhone 应用程序中,我不得不处理发送转义字符串而不是 JSON 对象作为响应的第三方 API。
响应如下所示:
"[
{
\"ID\":3880,
\"Name\":\"Exploration And Production Inc.\",
\"ContractNumber\":\"123-123\",
\"Location\":\"Booker #1\",
\"Volume\":1225.75,
\"OtherFees\":10.0
}
]"
到目前为止,我一直在通过操作字符串来删除不需要的字符来处理这个问题,直到我得到一个类似 JSON 的字符串,然后像往常一样解析它。
Angular 有一个方便的函数来处理这个问题:
angular.fromJson(response.data);
Java 有自己的处理方式。 Swift 中是否有等价函数?
【问题讨论】:
-
短期内没有帮助,但也许您应该与他们联系,让他们知道他们的 JSON 已损坏?也许他们甚至没有意识到这一点。从长远来看,可能会简化事情......
-
myJSONString.replacingOccurrences(of: "\", with: "")不是一个选项? -
@Buffalo 所以你目前正在对字符串进行转义。但在那之后你会怎么做?将其作为字典处理?如果是这样,那么最简单的解决方案是将
String转换为Data,然后简单地:try JSONSerialization.jsonObject(with: stringData, options: []) as? [[String: Any]]。但当然最好将其作为Codable模型处理,在这种情况下,它再次只是try JSONDecoder().decode(MyModel.self, from: stringData)。如果任一解决方案都适合您,那么我将发布一个包含更多详细信息的答案。 -
那不是 JSON 在 JSON 中字符串化的吗?将其转换为数据,然后将其转换回您的对象(使用可编码)或使用 JSONSerialization 转换为数组。
-
参见。逻辑(在 Objective-C 中):stackoverflow.com/questions/33149110/… 如果这已经是顶层,您可以使用
.allowFragment。