2014-11-11 3 views
0

Я попытался получить значение «семян» из json-ответа. Но я получаю ноль.Невозможно получить значение JSON - Swift

Json Ответ:

{ 
     "response": { 
      "params": { 
       "rows": "20", 
       "defType": "abc", 
       "seed": "381786611" 
      } 
     } 
    } 

Swift Синтаксический:

if let responseHeader:AnyObject = object?["response"] as? NSDictionary { 
    if let t = (responseHeader["params"] as? NSDictionary){ 
     let t1 = t["seed"] as? String 
     println("result is \(t1)") // This returns nil 
    } 
} 

Json Синтаксический

func processJsonToDictionary(object:AnyObject?) -> AnyObject?{ 
     if object != nil { 
      if let data: AnyObject = object { 
       var parseError: NSError? 

       var jsonResult = NSJSONSerialization.JSONObjectWithData(object as NSData!, options: NSJSONReadingOptions.MutableContainers, error: &parseError) as? NSDictionary 
       if(parseError != nil){ 
        return parseError 
       } 
       else{ 
        return jsonResult 
       } 
      } 
     } 
     return nil 
    } 

Я не могу получить значение t1. он всегда возвращает nil. Как я могу получить значение.

Кроме того, я поставил точку останова и попытался напечатать значение t1. Но Xcode Keeps crashing. Зачем?

+1

Я сомневаюсь, что «Xcode продолжает сбой». Это скорее ** ваш код **, который продолжает сбой? –

+0

Я попытался напечатать значение t1 в консоли (po t1). Xcode завершает работу и бросает сообщение об ошибке в диалоговом окне с двумя параметрами (OK и Reopen) –

+0

Тот же код работает для меня, как вы разобрали JSON? –

ответ

0

Я думаю, что основная проблема здесь заключается только в доступе к объекту JSON в swift.

var error: NSError? 
let jsonDict = NSJSONSerialization.JSONObjectWithData(jsonData, options: nil, error: &error) as NSDictionary 
let resp = jsonDict["response"] as? NSDictionary 
let params = resp?["params"]?["seed"] 
let seed = params!! as NSString 

Это просто, чтобы показать вам, как быстро открывается объект JSON. Вы можете, конечно, изменить его в соответствии с вашими потребностями, чтобы удалить нежелательные дополнительные цепочки.

0

Для облегчения манипуляций с JSON в Swift вы можете попробовать this небольшая библиотека. Это довольно легко, и вы можете сделать это:

var dictionary: [String: AnyObject]! 
if let json = NKJSON.parse(yourNSDataObject) { 
    dictionary <> json[NKJSON.rootKey] 
} 
-1

Сначала подтвердите, что ответ, который вы получаете, находится в формате json или в строковом формате. Для разбора json вы можете использовать swifty json pod

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