我在解析从Wiki API返回的JSON时遇到问题。
播客文件:

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

银行代码:
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
如下所示,遵循这种格式仍然会产生空值。参数似乎也没有好处:How do I access a nested JSON value using Alamofire and SwiftyJSON?

最佳答案

“pages”值是一个字典,因此在它上使用[0]将不起作用,您需要改用键:

print("otherJSON: \(json["query"]["pages"]["1895477"]["extract"])")

或者,如果页面中有许多项,并且您需要它们,则可以像这样迭代:
let pages = json["query"]["pages"]
for (_,page) in pages {
    print(page["extract"])
}

关于json - AlamoFire 4.0 + SwiftyJSON解开深度嵌套的JSON,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39987674/

10-13 00:35