【发布时间】:2015-04-08 20:09:16
【问题描述】:
几天来,我一直在努力解决 JSON 问题,并意识到我犯了一个基本错误。当我在我的代码下面有一个 JSON 文件时,它可以完美运行:
{"team": [
{
"name": "Manchester United FC",
"code": "MUFC"
},
{
"name": "Swansea City",
"code": "SWA"
}
]
}
适用于上述 JSON 文件的代码:
func jsonParsing()
{
let path: NSString = NSBundle.mainBundle().pathForResource("teams", ofType: "json")!
var data : NSData = NSData(contentsOfFile: path, options: NSDataReadingOptions.DataReadingMapped, error: nil)!
var dict: NSDictionary!=NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as NSDictionary
for var i = 0 ; i < (dict.valueForKey("team") as NSArray).count ; i++
{
arrDict.addObject((dict.valueForKey("team") as NSArray) .objectAtIndex(i))
}
}
但是,当我的 JSON 文件没有以下标题的引号时,它会导致“致命错误:在展开可选值时意外发现 nil”问题:
{team: [
{
name: "Manchester United FC",
code: "MUFC"
},
{
name: "Swansea City",
code: "SWA"
}
]
}
所以,您可能会问,为什么我不简单地使用引号来使其有效?好吧,我从一个网站获取 JSON 信息,所以必须使用该格式。有关原始文件格式检查的完整详细信息:
http://api.football-data.org/alpha/soccerseasons/354/teams
那么,我可以使用一个简单的设置,以便它使用我的 JSON 文件而不需要所有的双引号?
非常感谢,艾伦。
【问题讨论】:
-
JSON 字典键是字符串,必须用引号括起来。 – 但是,我看不到您链接到的 JSON 中没有引号的键的位置,that 实际上是有效的 JSON。
-
访问 json.org 并研究 JSON 语法。 (为你还没有这样做而感到羞耻。)
-
(当作为网页查看时,您引用的网站似乎缺少引号,但当您查看实际页面源时,引号就在那里。)
-
你好 Hot Licks,我确实研究过它,但我就是不明白为什么它看起来没有引号也能工作。原来我有一个 chrome 扩展来查看 JSON 文件,这意味着我没有意识到它们实际上在那里。当我点击“查看源代码”时,很明显他们在那里。于是混乱结束。对不起。