如何将字典数组转换为JSON?

我有一些字典想要转换为JSON。我的对象是类型,[[String: AnyObject]]并且最终要得到这样的示例:

[

{ "abc": 123, "def": "ggg", "xyz": true },

{ "abc": 456, "def": "hhh", "xyz": false },

{ "abc": 789, "def": "jjj", "xyz": true }

]

这是我正在尝试的方法,但是编译器不喜欢我的声明:

extension Array where Element == Dictionary<String, AnyObject> {

var json: String {

do { return try? NSJSONSerialization.dataWithJSONObject(self, options: []) ?? "[]" }

catch { return "[]" }

}

}

我怎样才能做到这一点?

回答:

一种简单的实现方法是扩展CollectionType。

使用可选的绑定和向下转换,然后序列化为数据,然后转换为字符串。

extension CollectionType where Generator.Element == [String:AnyObject] {

func toJSONString(options: NSJSONWritingOptions = .PrettyPrinted) -> String {

if let arr = self as? [[String:AnyObject]],

let dat = try? NSJSONSerialization.dataWithJSONObject(arr, options: options),

let str = String(data: dat, encoding: NSUTF8StringEncoding) {

return str

}

return "[]"

}

}

let arrayOfDictionaries: [[String:AnyObject]] = [

["abc":123, "def": "ggg", "xyz": true],

["abc":456, "def": "hhh", "xyz": false]

]

print(arrayOfDictionaries.toJSONString())

输出:

[

{

"abc" : 123,

"def" : "ggg",

"xyz" : true

},

{

"abc" : 456,

"def" : "hhh",

"xyz" : false

}

]

以上是 如何将字典数组转换为JSON? 的全部内容, 来源链接: utcz.com/qa/411788.html

回到顶部