2015-11-08 41 views
1

我如何从JSON制作[String: AnyObject]SwiftyJSON.JSON为[字符串:AnyObject]

let jsonString = Mapper().toJSONString(article!) 

// {\"price\":\"220.00\",\"name\":\"Capricciosa\",\"active\":true,\"calculable\":true,\"id\":76,\"article_type\":2,\"ingredients\":[],\"critical_qty\":\"0.00\",\"barcode\":\"\",\"tax\":\"1\"} 


let json = SwiftyJSON.JSON(jsonString!) 
// i need here to get [String: AnyObject] 

需要这个Alamofire参数应用..

回答

1

做这样的:

let jsonString = "{\"price\":\"220.00\",\"name\":\"Capricciosa\",\"active\":true,\"calculable\":true,\"id\":76,\"article_type\":2,\"ingredients\":[],\"critical_qty\":\"0.00\",\"barcode\":\"\",\"tax\":\"1\"}" 
    var dict = [String: AnyObject]() 
    if let dataFromString = jsonString.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) { 
     let json = JSON(data: dataFromString) 
     for (key, value) : (String, JSON) in json { 
      dict[key] = value.object 
     } 
    } 
+0

它为前两个解返回'nil',a nd'[:]'用于'dictionaryValue'。 –

+0

Ups,对不起,我已经更新了我的答案。 – Darko

2

SwiftyJSON实际上只是在基金会NSJSONSerialization周围的包装,它只是使它更方便地访问值和挖掘结构。然而,这不是你真正想要做的,你只需要字典,就是NSJSONSerialization返回的字典。如果你使用SwiftyJSON,你只需要走很长的路线。

这个函数,你需要什么不SwiftyJSON:

func jsonDict(json: String) -> [String : AnyObject]? { 
    if let 
     data = json.dataUsingEncoding(NSUTF8StringEncoding), 
     object = try? NSJSONSerialization.JSONObjectWithData(data, options: []), 
     dict = object as? [String : AnyObject] { 
      return dict 
    } else { 
     return nil 
    } 
} 

或者,如果你喜欢更实用的方法:

func jsonDict(json: String) -> [String : AnyObject]? { 
    return json.dataUsingEncoding(NSUTF8StringEncoding) 
     .flatMap{ try? NSJSONSerialization.JSONObjectWithData($0, options: []) } 
     .flatMap{ $0 as? [String : AnyObject] } 
} 
2

您可以从SwiftyJSON json

let dict: [String: AnyObject] 
    if jDict = json.dictionaryObject { 
     dict = jDict 
    } else { 
     dict = [String: AnyObject]() 
    } 
访问 dictionaryObject直接
相关问题