【问题标题】:Parse json with SwiftyJSON使用 SwiftyJSON 解析 json
【发布时间】: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 基本正确。检查文件末尾是否有任何不可见的控制字符。
  • 你是对的。我有一些其他著作作为评论( /* ..... */ )。在我最后清除所有垃圾后问题解决了。非常感谢。

标签: json swift parsing swifty-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"])
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 2017-05-31
    相关资源
    最近更新 更多