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*?