簡體   English   中英

如何從Swift 3.0中返回的json獲取特定值?

[英]How do I get a specific value from returned json in Swift 3.0?

我正在嘗試從Swift中的json獲取值。 我添加了數據樹的圖像。 我以前的嘗試沒有用。 下面的代碼打印了我不想要的完整的json對象。

json樹圖像 在此處輸入圖片說明

import PlaygroundSupport
import UIKit

let url = URL(string: "https://api.data.gov.sg/v1/transport/taxi-availability")
var request = URLRequest(url: url!);
request.addValue("xxxx", forHTTPHeaderField: "api-key")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
    guard error == nil else {
        print(error)
        return
    }
    guard let data = data else {
        print("Data is empty")
        return
    }

    let json = try! JSONSerialization.jsonObject(with: data, options: [])
    //print(json)

    }//end



//["features"]??[0]?


task.resume()
PlaygroundPage.current.needsIndefiniteExecution = true

您只需要對已經售出的json做一些事情:

let task = URLSession ... { data, response, error in
    let json = JSONSerialization.jsonObject(...)

    if let json = json as? [String: Any] {
       // now you have a top-level json dictionary
       for key, value in json {
           print("json[\"\(key\")] = \(value)")
       }
    }
}

我沒有驗證以下代碼,但它應適用於您提供的子樹。 (免責聲明:可能會有一些錯誤,但大多數情況下是正確的)

if let json =  (try? JSONSerialization.jsonObject(with: data, options: [])) as? [String:Any]
  , let features = json["features"] as? [Any]
  , let firstFeature = features[0] as? [String:Any]
  , let properties = firstFeature["properties"] as? [String:Any]            
  , let taxiCount = properties["taxi_count"] as? Int 
{
    print(taxiCount)
}

如果Json是字典

let json = try! JSONSerialization.jsonObject(with: data, options: [])
let jsonDict = json as? NSDictionary
//if you have a key name
let name = jsonDict["name"] as? String
//and so on
//if you have a array in your dictionary
let likes = jsonDict["likes"] as? NSArray
let numberOfLikes = likes.count
for eachLike in likes {
let likerName = eachLike["liker_name"] as? String
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM