我尝试从JSON(http://www.openligadb.de/api/getmatchdata/bl1/2014/15)获取数据。我希望每场比赛都有目标,位置,球队...... 我尝试了这个,但它不起作用。
let url = "http://www.openligadb.de/api/getmatchdata/bl1/2014/15"
//parse url
if let JSONData = NSData(contentsOfURL: NSURL(string: url)!) {
if let json = (try? NSJSONSerialization.JSONObjectWithData(JSONData, options: [])) as? NSDictionary {
//handle json
}
}
它没有进入第二个if语句(if let json = (try?...
)。
我希望你能帮助我。
编辑获取词典数据:
//Data Team1
if let team1 = object["Team1"] as? NSDictionary {
if let name = team1["TeamName"] as? String {
print("Name Team1: \(name)")
}
if let logo = team1["TeamIconUrl"] as? String {
print("Logo Team1: \(logo)")
}
// Etc.
}
答案 0 :(得分:0)
您需要做的是了解您的JSON结构:首先是数组,而不是字典。
这个数组有字典,每个字典都有一个字典数组。
听起来可能很复杂但实际上很简单,只需遵循JSON的结构并使用正确的类型解码值。
在JSON中,数组以[
开头,字典以{
开头(另外,请注意不要将此JSON语法与Swift的数组和字典混淆)。
您的代码可能是这样的,例如:
do {
let url = "http://www.openligadb.de/api/getmatchdata/bl1/2014/15"
if let url = NSURL(string: url),
JSONData = NSData(contentsOfURL: url),
jsonArray = try NSJSONSerialization.JSONObjectWithData(JSONData, options: []) as? NSArray {
for object in jsonArray {
if let goalsArray = object["Goals"] as? NSArray {
// Each "goal" is a dictionary
for goal in goalsArray {
print(goal)
if let name = goal["GoalGetterName"] as? String {
print("Name: \(name)")
}
if let ID = goal["GoalID"] as? Int {
print("ID: \(ID)")
}
// Etc.
}
}
}
}
} catch {
print(error)
}
更新:你几乎就在那里!但是" Team1"是字典,而不是数组。 :)
以下是解决方案:
do {
let url = "http://www.openligadb.de/api/getmatchdata/bl1/2014/15"
if let url = NSURL(string: url),
JSONData = NSData(contentsOfURL: url),
jsonArray = try NSJSONSerialization.JSONObjectWithData(JSONData, options: []) as? NSArray {
for object in jsonArray {
if let team1 = object["Team1"] as? NSDictionary {
if let name = team1["TeamName"] as? String {
print("Name Team1: \(name)")
}
if let logo = team1["TeamIconUrl"] as? String {
print("Logo Team1: \(logo)")
}
}
}
}
} catch {
print(error)
}