2015-12-11 4 views
0

У меня есть строка json: let jsonStr = {"username":"Jame"}, и я использую swiftyJson: let json = JSON(jsonStr). Теперь я хочу получить имя пользователя, поэтому я попробую json["username"].string, но результат равен нулю.swift SwiftyJSON, чтобы получить значение

+0

Есть ли ошибка компиляции с кодом: пусть jsonStr = { «имя»: «Джейм»} – ZHZ

ответ

1

Во-первых, Вы должны использовать

let jsonStr = "{\"username\":\"Jame\"}"

вместо

let jsonStr = {"username":"Jame"}

Если jsonStr только String, вам нужно преобразовать строку в словарь. JSON Для инициализатора требуется экземпляр словаря. попробуйте это:

let jsonStr = "{\"username\":\"Jame\"}" // string 
let jsonData = jsonStr.dataUsingEncoding(NSUTF8StringEncoding)! // string->NSData 
let jsonDic = try! NSJSONSerialization.JSONObjectWithData(jsonData, options: .AllowFragments) // NSData->Dictionary 
let json = JSON(jsonDic) // good! 
print(json) 
let name = json["username"].string 
print(name) // Optional("Jame") 

Смелее, вы используете if let, do{} catch(let e){} вместо !, try!

+0

У меня есть сделал почти то же самое с youl. Но нет статута 'let jsonDic = try! NSJSONSerialization.JSONObjectWithData (jsonData, options: .AllowFragments) // NSData-> Dictionary ', он по-прежнему работает нормально. – fcbflying

Смежные вопросы