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