Heim > Fragen und Antworten > Hauptteil
新手一枚,但是实在是找不到相关的例子来学习了,所以迫不得已提问。
现在的需求是吧类似这样的Json存储在一个字典中,主要是相同ID的需要存在一起。
{
"hy_id": 5,
"company": [
{
"name": "JOVIOLD"
},
{
"name": "DAYCORE"
},
{
"name": "ENDIPINE"
}
]
}
我尝试使用[String:AnyObject]类型的字典,但是改如何判断是相同ID呢?ID和name都可以正常获取到了,但是不知道应该怎么存储的语句
let path: String = NSBundle.mainBundle().pathForResource("jsonData", ofType: "json")!
let nsurl = NSURL(fileURLWithPath: path)
let data:NSData = NSData(contentsOfURL: nsurl)!
let dict = JSON(data:data)
//ToDo
for i in 0...dict.count{
let number = dict[i]["hy_id"].intValue
let numberS = String(number)
let name:String = dict[i]["name"].stringValue
//ToDo
print("\(number)\(name)")
}
我的目的是将这个json包储存到一个字典里,每个hy_id对应一个key,每个name放在对应的value。我现在的代码有问题,可以请您重新写一下如何存储。
高洛峰2017-04-18 09:49:32
从iOS5开始,处理JSON可以用Foundation框架里的JSONSerialization
类来处理了,专门处理JSON转字典或字典转JSON的工作。
我不知道你用的是不是SwiftyJSON,如果是的话,let dict = JSON(data:data)
这句JSON的构造方法用的都是系统的JSONSerialization
:
public init(data:Data, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil) {
do {
let object: Any = try JSONSerialization.jsonObject(with: data, options: opt)
self.init(object)
} catch let aError as NSError {
if error != nil {
error?.pointee = aError
}
self.init(NSNull())
}
}
如果你要换成字典的话,用SwiftJSON很简单,直接取值:
let dictThatYouWant = dict.dictionaryObject