Maison  >  Questions et réponses  >  le corps du texte

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中文网2741 Il y a quelques jours433

répondre à tous(1)je répondrai

  • 高洛峰

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

    À partir d'iOS5, JSON peut être traité à l'aide de la classe JSONSerialization du framework Foundation, spécialisé dans la conversion de JSON en dictionnaire ou de dictionnaire en JSON.

    Je ne sais pas si vous utilisez SwiftyJSON. Si oui, let dict = JSON(data:data)Cette méthode de construction JSON utilise le système 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())
            }
        }

    Si vous souhaitez le changer en dictionnaire, c'est très simple d'utiliser SwiftJSON, il suffit de récupérer directement la valeur :

    let dictThatYouWant = dict.dictionaryObject

    répondre
    0
  • Annulerrépondre