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 に答える