首頁  >  問答  >  主體

ios - Swift如何将json按需储存在字典当中?

新手一枚,但是实在是找不到相关的例子来学习了,所以迫不得已提问。
现在的需求是吧类似这样的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。我现在的代码有问题,可以请您重新写一下如何存储。

PHP中文网PHP中文网2740 天前429

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-04-18 09:49:32

    從iOS5開始,處理JSON可以用Foundation框架裡的JSONSerialization類來處理了,專門處理JSON轉字典或字典轉JSON的工作。

    我不知道你用的是不是SwiftyJSON,如果是的話,let dict = JSON(data:data)這句JSON的構造方法用的都是系統的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

    回覆
    0
  • 取消回覆