使用 SwiftyJSON 解析 json

Posted

技术标签:

【中文标题】使用 SwiftyJSON 解析 json【英文标题】:Parse json with SwiftyJSON 【发布时间】:2015-11-29 18:30:15 【问题描述】:

我一直在尝试将 SwiftyJSON 用于项目中的虚拟 JSON 文件。

但我只能得到“null”或“nil”而不是 JSON 文件中的数据。我可能会在这里寻求一点帮助。

这是我得到的回应: 0 空值 1 的名称:无 由 1 组成:空

这是一个虚拟的 JSON 文件;


    "Cars": [

        
            "Name": "111",
            "Make": "2000"
        ,    

        
            "Name": "222",
            "Make": "2010"
        

    ]


这是我试图解析的地方;

import UIKit

class ViewController: UIViewController 

    var numberOfRows = 0

    override func viewDidLoad() 
        super.viewDidLoad()

        parseJSON()

    

    func parseJSON() 

        let path : String = NSBundle.mainBundle().pathForResource("jsonfile", ofType: "json") as String!
        let jsonDATA = NSData(contentsOfFile: path) as NSData! 

        let readableJSON = JSON(data: jsonDATA, options: NSJSONReadingOptions.MutableContainers, error: nil)

        let allList = readableJSON["Cars"]

        numberOfRows = readableJSON["Cars"].count

        print("\(numberOfRows)")

        print("\(allList)")

        let name1 = readableJSON["Cars"][0]["Name"].string
        let make1 = readableJSON["Cars",0,"Make"]

        print("Name of 1 : \(name1)")
        print("Make of 1: \(make1)")

    



【问题讨论】:

传递一个NSError 实例作为错误参数来获取一些错误信息。 as String! 是一种非常不寻常的语法。使用as! String 或可选绑定(首选)if let … as? String … 我知道了 --> 可选(错误域=NSCocoaErrorDomain Code=3840 "Garbage at end." UserInfo=NSDebugDescription=Garbage at end.) JSON 字符串可能以 \0 终止符结尾,这会导致错误或 JSON 未正确编码。由于 JSON 文本在文件中,因此删除所有仅是人类可读语法糖的空格字符。 PS:JSON 基本正确。检查文件末尾是否有任何不可见的控制字符。 你是对的。我有一些其他著作作为评论( /* ..... */ )。在我最后清除所有垃圾后问题解决了。非常感谢。 【参考方案1】:

希望此解决方案对您有所帮助。

func parseJson () 

  if let path = NSBundle.mainBundle().pathForResource("jsonfile", ofType: "json")
    
        if let jsonData = try? NSData(contentsOfFile: path, options: .DataReadingMappedIfSafe)
        
            let originalJson = JSON(data: jsonData)
            for (_, subJson) in originalJson["Cars"] 
                print(subJson["Name"])
                print(subJson["Make"])
            
        
    

【讨论】:

以上是关于使用 SwiftyJSON 解析 json的主要内容,如果未能解决你的问题,请参考以下文章

使用 SwiftyJSON 解析 JSON 的问题

使用 SwiftyJSON 解析 json

使用 swiftyJson 解析 JSON

使用 SwiftyJSON 解析 JSON 响应

使用 SwiftyJSON 将 JSON 解析为结构

尝试使用 swiftyJSON 快速解析 JSON