AlamoFire 4.0 + SwiftyJSON 展开深度嵌套 JSON
AlamoFire 4.0 + SwiftyJSON Unwrapping deeply nested JSON
我在解析 JSON 我正在从 Wiki API.
返回时遇到问题
播客文件:
platform :ios, ’10.0’
inhibit_all_warnings!
use_frameworks!
target 'GemFinder' do
pod 'Alamofire', '~> 4.0’
pod 'SwiftyJSON', :git => 'https://github.com/appsailor/SwiftyJSON.git', :branch => 'swift3'
end
Swift代码:
import UIKit
import Alamofire
import SwiftyJSON
class WikiAPI: NSObject {
func MineralRequest(minID: (String)) {
Alamofire.request("https://en.wikipedia.org/w/api.php?action=query&titles=\(minID)&exintro=1&prop=pageimages%7Cextracts&format=json&pithumbsize=300", parameters: ["query": "pages"]).responseJSON { response in
if let values = response.result.value as? [String: AnyObject] {
let json = JSON(values)
// Returns null
print("otherJSON: \(json["query"]["pages"][0]["extract"])")
let JSONvalues = values as NSDictionary
print("JSONvalues: \(JSONvalues)")
// This is also working to retrieve everything from below "query"
let parse = JSONvalues.object(forKey: "query")
print("Parse: \(parse)")
let queryValues = values["query"]
// Returns nested "pages" object, but I need to go deeper.
print("queryvalues: \(queryValues?["pages"])")
}
}
}
}
当然,我能够得到响应并尝试更深入,但在尝试展开时我总是得到空值。
我错过了什么?这是树的图像。我正在尝试提取标题、图像和摘录。
JSON response preview
如此处所示,遵循此格式仍会生成空值。参数似乎也没有好处:
"pages" 值是一个字典,所以在它上面使用 [0]
是行不通的,您需要改用键:
print("otherJSON: \(json["query"]["pages"]["1895477"]["extract"])")
或者如果页面中有很多项目并且您想要所有项目,您可以像这样循环访问它:
let pages = json["query"]["pages"]
for (_,page) in pages {
print(page["extract"])
}
我在解析 JSON 我正在从 Wiki API.
返回时遇到问题播客文件:
platform :ios, ’10.0’
inhibit_all_warnings!
use_frameworks!
target 'GemFinder' do
pod 'Alamofire', '~> 4.0’
pod 'SwiftyJSON', :git => 'https://github.com/appsailor/SwiftyJSON.git', :branch => 'swift3'
end
Swift代码:
import UIKit
import Alamofire
import SwiftyJSON
class WikiAPI: NSObject {
func MineralRequest(minID: (String)) {
Alamofire.request("https://en.wikipedia.org/w/api.php?action=query&titles=\(minID)&exintro=1&prop=pageimages%7Cextracts&format=json&pithumbsize=300", parameters: ["query": "pages"]).responseJSON { response in
if let values = response.result.value as? [String: AnyObject] {
let json = JSON(values)
// Returns null
print("otherJSON: \(json["query"]["pages"][0]["extract"])")
let JSONvalues = values as NSDictionary
print("JSONvalues: \(JSONvalues)")
// This is also working to retrieve everything from below "query"
let parse = JSONvalues.object(forKey: "query")
print("Parse: \(parse)")
let queryValues = values["query"]
// Returns nested "pages" object, but I need to go deeper.
print("queryvalues: \(queryValues?["pages"])")
}
}
}
}
当然,我能够得到响应并尝试更深入,但在尝试展开时我总是得到空值。
我错过了什么?这是树的图像。我正在尝试提取标题、图像和摘录。
JSON response preview
如此处所示,遵循此格式仍会生成空值。参数似乎也没有好处:
"pages" 值是一个字典,所以在它上面使用 [0]
是行不通的,您需要改用键:
print("otherJSON: \(json["query"]["pages"]["1895477"]["extract"])")
或者如果页面中有很多项目并且您想要所有项目,您可以像这样循环访问它:
let pages = json["query"]["pages"]
for (_,page) in pages {
print(page["extract"])
}