SwiftyJSON.JSON 到 [String: AnyObject]

Posted

技术标签:

【中文标题】SwiftyJSON.JSON 到 [String: AnyObject]【英文标题】:SwiftyJSON.JSON to [String: AnyObject] 【发布时间】:2015-11-08 17:30:38 【问题描述】:

如何从JSON 生成[String: 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】:

您可以直接从 SwiftyJSON json 访问 dictionaryObject

    let dict: [String: AnyObject]
    if jDict = json.dictionaryObject 
        dict = jDict
     else 
        dict = [String: AnyObject]()
    

【讨论】:

【参考方案2】:

这样做:

    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
        
    

【讨论】:

它返回nil 用于前两个解决方案,[:] 用于dictionaryValue【参考方案3】:

SwiftyJSON 实际上只是 Foundation 中 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] 

【讨论】:

以上是关于SwiftyJSON.JSON 到 [String: AnyObject]的主要内容,如果未能解决你的问题,请参考以下文章

swift、Alamofire、SwiftyJSON:如何解析 arrayObject

Scala RDD[(String,String)] 到 RDD[String]

std::string自带“/0”吗?怎么将string拷贝到char*?

std::string自带“/0”吗?怎么将string拷贝到char*?

std::string自带“/0”吗?怎么将string拷贝到char*?

std::string自带“/0”吗?怎么将string拷贝到char*?