ios - 如何在 Swift 中解析 JSON 中的数组?

我正在使用返回 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 6 的错误,还是我做错了什么?

最佳答案

Swift 中的字典访问返回一个 Optional,所以你需要强制该值(或使用 if let 语法)来使用它。

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

(不过,它可能不应该让 Xcode 崩溃)

https://stackoverflow.com/questions/24026305/

相关文章:

json - 如何重用 Jersey 的 JSON/JAXB 进行序列化?

c# - 如何使用 Newtonsoft.Json 包在 C#(4.0) 中解析我的 json 字符

java - Gson - 自动引号(“)转义?

json - 在jq中将字符串转换为json

javascript - 如何使用 Javascript 将数据写入 JSON 文件

php - 通过 JSON 发送 HTML 代码

json - 自定义 MarshalJSON() 永远不会在 Go 中被调用

javascript - 在 JavaScript 中将 JSON 对象转换为 CSV 格式

javascript - 在javascript中将json对象写入文本文件

javascript - 在 HTML 数据属性上添加 JSON 是不是很糟糕?