使用 Swift、AlamoFire 和 SwiftyJSON 解析 JSON 数据
Parse JSON data with Swift, AlamoFire and SwiftyJSON
作为一个Swift新手,我很困惑如何解析从API获取的一些JSON数据。我可以使用 alamofire 请求从 api 获取 JSON 数据。在这一点上,我想我有一个 NSDictionary 对象,JSON as print(JSON) logs to console a good deal of JSON.
if let result = response.result.value {
let JSON = result as! NSDictionary
print("this is what JSON is")
print(JSON)
我的问题是,首先,JSON 实际上是一个 NSDictionary。其次,我将如何访问 JSON 中的值。我需要先将其转换为数据对象吗?或者如何获取嵌套数据。
例如,假设 JSON 看起来像这样:
{
"contact": {
"first": "Bob",
"second":"Jones"
}
}
我在 SO 上看到这段代码:
let data = JSON(data: JSON)
print("data\(data["contact"]["first"])")
但是它抛出一个错误。我已经安装了 swiftyJSON 但很高兴有或没有它的解决方案。
提前感谢您的任何建议
你能试试吗
if let result = response.result.value as? [String:Any] {
if let contact = result["contact"] as? [String:Any] {
if let first = contact["first"] as? String {
print(first)
}
}
}
还有这个
let data = JSON(data: JSON)
给出错误,因为参数的类型应该是 Data
而不是 Dictionary
我更愿意 return 来自 Alamofire 请求的数据并使用 Decodable
解析它并转换为所需的模型
试试这个!
if let data = response.data {
let jsonData = JSON(data: data)
print("data : \(jsonData["contact"]["first"].string)")
}
Swift4 引入了令人惊叹的 Codable 协议。
使用 Codable,我们可以通过编写很少的代码行将 JSONObject 或 PropertyList 文件建模为等效的 Struct 或 类。
有许多可用的在线工具可以根据您 JSON 创建模型 class
(http://www.json4swift.com/)
示例
let decoder = JSONDecoder()
let parsedObject = try decoder.decode(Class.self, from: data)
您可以在下面找到详细信息 link:
https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types
作为一个Swift新手,我很困惑如何解析从API获取的一些JSON数据。我可以使用 alamofire 请求从 api 获取 JSON 数据。在这一点上,我想我有一个 NSDictionary 对象,JSON as print(JSON) logs to console a good deal of JSON.
if let result = response.result.value {
let JSON = result as! NSDictionary
print("this is what JSON is")
print(JSON)
我的问题是,首先,JSON 实际上是一个 NSDictionary。其次,我将如何访问 JSON 中的值。我需要先将其转换为数据对象吗?或者如何获取嵌套数据。
例如,假设 JSON 看起来像这样:
{
"contact": {
"first": "Bob",
"second":"Jones"
}
}
我在 SO 上看到这段代码:
let data = JSON(data: JSON)
print("data\(data["contact"]["first"])")
但是它抛出一个错误。我已经安装了 swiftyJSON 但很高兴有或没有它的解决方案。
提前感谢您的任何建议
你能试试吗
if let result = response.result.value as? [String:Any] {
if let contact = result["contact"] as? [String:Any] {
if let first = contact["first"] as? String {
print(first)
}
}
}
还有这个
let data = JSON(data: JSON)
给出错误,因为参数的类型应该是 Data
而不是 Dictionary
我更愿意 return 来自 Alamofire 请求的数据并使用 Decodable
解析它并转换为所需的模型
试试这个!
if let data = response.data {
let jsonData = JSON(data: data)
print("data : \(jsonData["contact"]["first"].string)")
}
Swift4 引入了令人惊叹的 Codable 协议。
使用 Codable,我们可以通过编写很少的代码行将 JSONObject 或 PropertyList 文件建模为等效的 Struct 或 类。
有许多可用的在线工具可以根据您 JSON 创建模型 class (http://www.json4swift.com/)
示例
let decoder = JSONDecoder()
let parsedObject = try decoder.decode(Class.self, from: data)
您可以在下面找到详细信息 link: https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types