![](/img/trans.png)
[英]How do i parse the json array in tableview in swift 4 using decoder
[英]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 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.