Разбор словаря SwiftyJSON

Я пытаюсь использовать SwiftyJSON для анализа некоторых данных с сервера.

Например, скажем, JSON, возвращенный с сервера:

{     
 "data":{  
     "id":"92",
     "name":"harry",
     "username":"Hazza"
   },
 "error":false
}

Я хотел бы получить строку имени пользователя, и для этого я получаю объект данных, используя:

let data = json["data"].dictionaryValue

Затем, чтобы получить строку имени пользователя, я ожидаю, что смогу сделать

let username = data["username"].stringValue

Однако это возвращает сообщение об ошибке «(String, JSON) не имеет члена с именем« .stringValue ».

Где я ошибаюсь в этой, казалось бы, простой задаче?

Спасибо.


person coldbuffet    schedule 10.02.2015    source источник


Ответы (3)


Что вы должны сделать, это:

if let username = json["data"]["username"].string {
    println(username)
}
person fz.    schedule 10.02.2015
comment
Спасибо за ваш ответ. Однако, согласно README.md, в необязательном геттере, кажется, есть использование для stringValue. github.com/SwiftyJSON/SwiftyJSON#non-Optional-getter - person coldbuffet; 10.02.2015

Хотя приведенное выше будет работать, реальная проблема заключалась в том, что вам нужно было распаковать значение dict:

let username = data["username"]!.stringValue

person John    schedule 15.03.2015

Для Свифт 3/4

guard let username = json["data"]["username"].string else { return nil }
person Mike Zriel    schedule 25.03.2019