簡體   English   中英

如何在Swift中解析的JSON中解析一個數組?

[英]How do I parse an array inside parsed JSON in Swift?

我正在使用返回如下所示JSON的API

{
   "boards":[
      {
         "attribute":"value1"
      },
      {
         "attribute":"value2"
      },
      {
         "attribute":"value3",
      },
      {
         "attribute":"value4",
      },
      {
         "attribute":"value5",
      },
      {
         "attribute":"value6",
      }
   ]
}

在Swift中,我使用兩個函數來獲取並解析JSON

func getJSON(urlToRequest: String) -> NSData{
    return NSData(contentsOfURL: NSURL(string: urlToRequest))
}

func parseJSON(inputData: NSData) -> NSDictionary{
    var error: NSError?
    var boardsDictionary: NSDictionary = NSJSONSerialization.JSONObjectWithData(inputData, options: NSJSONReadingOptions.MutableContainers, error: &error) as NSDictionary
    return boardsDictionary
}

然后我用

var parsedJSON = parseJSON(getJSON("link-to-API"))

可以很好地解析JSON。 當我打印出

println(parsedJSON["boards"])

我得到了數組的所有內容。 但是,我無法訪問每個單獨的索引。 我很肯定這是一個數組,因為我之間

parsedJSON["boards"].count

返回正確的長度。 但是,如果我嘗試通過使用訪問單個索引

parsedJSON["boards"][0]

XCode關閉語法高亮顯示並給我以下信息:

XCode錯誤

並且代碼將無法編譯。

這是XCode 6的錯誤,還是我做錯了什么?

Swift中的字典訪問返回一個Optional,因此您需要強制該值(或使用if let語法)來使用它。

這有效: parsedJSON["boards"]![0]

(不過,它可能不會使Xcode崩潰)

在這里看看: https : //github.com/lingoer/SwiftyJSON

let json = JSONValue(dataFromNetworking)
if let userName = json[0]["user"]["name"].string{
    //Now you got your value
}

您可以創建一個變量

var myBoard: NSArray = parsedJSON["boards"] as! NSArray

然后您就可以訪問“面板”中的所有內容,例如-

println(myBoard[0])

解決此問題的正確方法是檢查字典鍵的返回值:

    if let element = parsedJSON["boards"] {
        println(element[0])
    }

暫無
暫無

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

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