如何使用SwiftyJSON从文件中检索数据

9

我已经将一个JSON文件添加到我的文件系统中,其中数据结构如下:

{ "DDD" : "3D Systems Corporation", "MMM" : "3M Company", "WBAI" : "500.com Limited", "WUBA" : "58.com Inc.", "AHC" : "A.H. Belo Corporation", "ATEN" : "A10 Networks, Inc.", "AAC" : "AAC Holdings, Inc.", "AIR" : "AAR Corp." }

我的文件名是 stockDict.json ,我正在尝试使用以下代码从中检索数据:

let jsonFilePath:NSString = NSBundle.mainBundle().pathForResource("stockDict", ofType: "json")!
        let jsonData:NSData = NSData.dataWithContentsOfMappedFile(jsonFilePath as String) as! NSData
        let error:NSError?
        let json = JSON(jsonData)

        println(json[0][0].string)

但是当我打印时,得到的只有 nil 。我的代码有什么问题吗?任何建议都将不胜感激。

我发现这个答案非常有帮助 https://dev59.com/MWAf5IYBdhLWcg3wqELp#28644494 - crobicha
3个回答

13

你试过了吗?

let json = JSON(data: jsonData) // Note: data: parameter name
println(json["DDD"].string)

现在我已经有了,但它仍然打印出“nil”。 - joseph
这并没有回答问题。问题是关于从文件加载JSON的。 - 123

9

Swift 3/4 版本:

let path = Bundle.main.path(forResource: "JSON", ofType: "json")!
let jsonString = try? String(contentsOfFile: path, encoding: String.Encoding.utf8)
let json = JSON(parseJSON: jsonString!)

现在建议使用 Bundle.main.url 而不是 Bundle.main.path。 - Eric Aya

6

我没有足够的声望来评论,但是这个答案已经过时了,从iOS 8开始,特别是以下部分。

.dataWithContentsOfMappedFile

XCode告诉我。

'dataWithContentsOfMappedFile' was deprecated in iOS 8.0: Use +dataWithContentsOfURL:options:error: and NSDataReadingMappedIfSafe or NSDataReadingMappedAlways instead.

这是我正在使用的更新代码。它能够在 iOS 9.1 上编译和运行。

let path = NSBundle.mainBundle().pathForResource("fileName", ofType: "json")
let jsonData = NSData(contentsOfFile:path!)
let json = JSON(data: jsonData!)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接