gpt4 book ai didi

json - 在 Swift 上转义 json 字符串

转载 作者:行者123 更新时间:2023-11-28 13:38:48 26 4
gpt4 key购买 nike

在使用 SWIFT 的 iPhone 应用程序中,我不得不处理第三方 API,该 API 发送转义字符串而不是 JSON 对象作为响应。

响应看起来像这样:

"[
{
\"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 中有等效函数吗?

最佳答案

如果您将其解析为字典,那么最简单的解决方案是将 String 转换为 Data 并使用 JSONSerialization:

if let data = string.data(using: .utf8) {
do {
let responseArray = try JSONSerialization.jsonObject(with: data, options: []) as? [[String: Any]]
print(responseArray)
}
catch {
print(error)
}
}

但是当然最好将它作为一个 Codable 模型来处理,在这种情况下它又很简单:

try JSONDecoder().decode([Item].self, from: data)

前提是你有一个有效的 Decodable 模型,如下所示:

struct Item: Decodable {
let id: Int
let name: String
//add the other keys you want to use (note its type sensitive)

enum CodingKeys: String, CodingKey {
case id = "ID"
case name = "Name"
}
}

最后,避免使用字符串化的 json,因为它很容易出错。
格式错误的字符串或结构中的小/大偏差很容易被忽视。
让后端团队知道他们应该在其 API 中遵循消费者可以依赖的协议(protocol)。
通过设置json格式,它本质上就像一个契约(Contract),清晰地展示了它的内容和目的。
发送一个字符串化的 json 只是懒惰,并且对它的设计者的影响很差,恕我直言。

关于json - 在 Swift 上转义 json 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56296866/

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