7

我有一个用例,我有一个字典数组,我需要它们作为 json 对象:

var data = [Dictionary<String, String>]()
//append items 
var bytes = NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.allZeros, error: nil)
var jsonObj = JSON(NSString(data: bytes!, encoding: NSUTF8StringEncoding)!)

println(jsonObj)
println(jsonObj[0])

第一个打印语句给了我

[
    {"price":"1.20","city":"Foo","_id":"326105","street":"One"},
    {"price":"1.20","city":"Bar","_id":"326104","street":"Two"}
]

第二

null

但我希望它返回 json 数组中的第一个元素。我做错了什么?

4

2 回答 2

24

根据文档,这应该是您所需要的。

var data = [Dictionary<String, String>]()
//append items 
var jsonObj = JSON(data)

println(jsonObj)
println(jsonObj[0])

您在将数组直接转换为JSON对象时遇到问题吗?

于 2014-11-11T01:27:35.933 回答
8

我不确定你在第 4 行有什么方法(JSON),但我让你的代码可以使用NSJSONSerialization.JSONObjectWithData如下所示:

var data = [Dictionary<String, String>]()
data.append(["price":"1.20","city":"Foo","_id":"326105","street":"One"])
data.append(["price":"1.20","city":"Bar","_id":"326104","street":"Two"])

let bytes = try! NSJSONSerialization.dataWithJSONObject(data, options: NSJSONWritingOptions.PrettyPrinted)
var jsonObj = try! NSJSONSerialization.JSONObjectWithData(bytes, options: .MutableLeaves) as! [Dictionary<String, String>]

print(jsonObj)
print(jsonObj[0])

...带输出...

"[[price: 1.20, city: Foo, _id: 326105, street: One], [price: 1.20, city: Bar, _id: 326104, street: Two]]"

"[price: 1.20, city: Foo, _id: 326105, street: One]"

编辑:我现在看到了 swifty-json 的标签。我对此并不熟悉,但我上面包含的代码适用于内置方法。

于 2014-11-11T01:27:43.040 回答