NSDictionary для строки json для объекта json с использованием SwiftyJSON

У меня есть вариант использования, когда у меня есть массив словарей, и они мне нужны как объект 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. Что я делаю неправильно?


person Upvote    schedule 10.11.2014    source источник
comment
Я ничего не знаю о Swifty JSON, но могу предположить, что jsonObj — это объект, description которого отображает данные, которые вы видите. Но объект не является массивом, и оператор [0] отскакивает.   -  person Hot Licks    schedule 11.11.2014


Ответы (2)


Согласно документам, это должно быть все, что вам нужно.

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

println(jsonObj)
println(jsonObj[0])

У вас возникли проблемы с преобразованием массива непосредственно в объект JSON?

person Jeffery Thomas    schedule 11.11.2014

Я не уверен, какой метод у вас есть в 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. Я не знаком с этим, но приведенный выше код работает со встроенными методами.

person Acey    schedule 11.11.2014