json - JSON返回单个字符串时如何使用Swift的JSONSerialization
问题描述
所以这可能是一个非常基本的问题,但我很好奇你将如何使用 Swift 中的 JSONSerialization 处理解析作为单个字符串返回的 JSON 对象。所以我正在玩一个免费的哈利波特 API,并注意到其中一个路由返回一个字符串(https://www.potterapi.com/v1/sortinghat),它给出的响应只是一个字符串哈利波特中的四所房子。
"Ravenclaw"
下面是我的尝试。
do {
let json = try JSONSerialization.jsonObject(with: data, options: []) as? String
print("json: \(json)")
} catch {
print("Error: \(error.localizedDescription)")
}
我认为简单地进行类型转换String
就足够了,但我只是收到以下错误:“错误:无法读取数据,因为它的格式不正确。 ”
我知道有更好的方法来解析 JSON,例如使用 Codable,但我只是想了解它是如何工作的,然后再继续解决这个问题。
解决方案
JSONSerialization 是错误的工具。您想使用 JSONDecoder,它在 Swift 中更有用:
let json = Data("""
"Ravenclaw"
""".utf8)
let result = try JSONDecoder().decode(String.self, from: json)
请注意,这需要 iOS 13.1 或 macOS 10.15.1。否则,您将需要使用@vadian 的答案。
推荐阅读
- recursion - 二叉树的直径
- grafana - 使用 ECS/Fargate 问题部署 Grafana
- python - 列出年份列表中闰年数量的功能
- ruby-on-rails - Rails db:当外键很大时,seed 不会创建记录
- python - 在 Matplotlib 中为子图添加边距
- c++ - C++ 通过这个函数的所有路径都会在宏中调用自己?
- ios - Observable 不接收事件
- python - 如何使用 pkg_resources 搜索已安装模块目录之外的文件?
- r - 尝试使用复制在 R 中生成列表
- javascript - 使用 Chrome 扩展程序中的 onClick 将按钮添加到页面的正确方法