使用 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的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 解析 JSON 的问题

使用 SwiftyJSON 解析 json

使用 swiftyJson 解析 JSON

使用 SwiftyJSON 解析 JSON 响应

使用 SwiftyJSON 将 JSON 解析为结构

尝试使用 swiftyJSON 快速解析 JSON