使用 SwiftyJSON 解析 JSON
Posted
技术标签:
【中文标题】使用 SwiftyJSON 解析 JSON【英文标题】:Parsing JSON with SwiftyJSON 【发布时间】:2015-07-15 19:01:15 【问题描述】:我在使用 SwiftyJSON 解析以下 JSON 文件时遇到问题。我浏览了网络并尝试了不同的建议解决方案,但没有成功。
这是 JSON:
'info-leag':'Status':1,'Name':'Testing Name','url-lig':'test.testing.com','uid':'12345'
还有我的相关代码:
//initializes request
let request = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.currentQueue()) response, maybeData, error in
if let data = maybeData
let json = JSON(data: data)
//stores data as UTF8 String
let contents = NSString(data:data, encoding:NSUTF8StringEncoding)
第一部分似乎工作正常,我能够获取 JSON 并将其保存为数据,在底部我将其转换为字符串以确保我得到正确的信息,然后我将其打印到确定。
我尝试了不同的方法,例如:
let name = json["info-league"]["Name"] //can't seem to get the context
我正在尝试将 Name 和 uid 保存为 2 个字符串以及将 Status 保存为 int。
谢谢!
【问题讨论】:
如果这是实际的 JSON 响应,则无效:单引号应为双引号。此外,您的示例中有一个错字:“info-league”≠“info-leag” 您可以使用 www.jsonlint.com 来验证您的 JSON 这是实际的 JSON 响应,我会努力改变它。一旦我使用双引号格式,我上面使用的语法会起作用吗? (假设没有错字) 是的,它适用于您的示例。 工作完美,谢谢@EricD。 【参考方案1】:一旦你像这样使你的 JSON 有效:
"info-league":"Status":1,"Name":"Testing Name","url-lig":"test.testing.com","uid":"12345"
您将能够使用您的示例,它有效(我刚刚测试过):
let name = json["info-league"]["Name"]
但最好使用 SwiftyJSON 类型:
let name = json["info-league"]["Name"].string
let status = json["info-league"]["Status"].int
所以你的变量是已知类型供以后使用。
如果你不这样做,它们将是 JSON
类型,这是由 SwiftyJSON 创建的类型,你将不得不稍后转换它们(不是问题,取决于你在代码中的组织方式)。
【讨论】:
【参考方案2】:试试:
let name = json["info-league"]["Name"].string
【讨论】:
以上是关于使用 SwiftyJSON 解析 JSON的主要内容,如果未能解决你的问题,请参考以下文章