2016-02-06 5 views
0

Я пытаюсь получить доступ к JSON, что я получаю через Alamofire:не удается получить доступ к JSON с помощью SwiftyJSON

func getDataFromServer() { 
    Alamofire.request(.POST, websiteURL, parameters: myParameters) .responseString { 
     (response) -> Void in 
     if let value = response.result.value { 
      let json = JSON(value) 
      self.parseJSON(json) 
     } 
    } 
} 

и JSON, который возвращается ко мне выглядит примерно так:

{ 
"status":"success", 
"object":[ 
    { 
    "name":"Bob", 
    "age":"20 ", 
    }, 
    { 
    "name": "Jane", 
    "age":"25" 
    }, 
] 
} 

и я использую SwiftyJSON для доступа к списку имен:

func parseJSON(json: JSON) { 
    for result in json["object"].arrayValue { 
     print(result["name"].stringValue) 
    } 
} 

но ничего не печатает. Я делаю что-то неправильно?

+0

Неверный формат json. Это может быть проблема? Правильный формат сын должен быть { "Статус": "Успех", "объект": [ { "имя": "Боб", "возраст": "20" }, { " name ":" Jane ", " age ":" 25 " } ] ] } –

+0

Я ошибся, набрав JSON вручную, но мне удалось исправить мою проблему. Я возвращал данные как строку вместо JSON. – manohjay

ответ

2

responseJSON следует использовать вместо responseString

0

Ваш JSON недействителен

{ 
    "status": "success", 
    "object": [ 
    { 
     "name": "Bob", 
     "age": "20 ", 

    }, 
    { 
     "name": "Jane", 
     "age": "25" 
    }, <--Delete this comma 

    ] 
} 
+0

Opps, извините. Был вручную набрав JSON. Но запятая отсутствует в фактическом JSON, а JSON - действительный JSON. – manohjay

+0

@manohjay Хорошо, тогда Almonfire не возвращает 'NSData', см. Здесь пример http://stackoverflow.com/questions/32018741/how-to-get-the-result-value-of-alamofire-request -responsejson-in-swift-2 –

+0

Мне удалось исправить мою проблему. Я возвращал данные как строку вместо JSON. – manohjay

0

удалось выяснить, что случилось с моим кодом. Когда я сделал запрос POST с помощью Alamofire, я возвращал данные обратно в виде строки: .responseString вместо JSON: .responseJSON

рабочий код:

func getDataFromServer() { 
Alamofire.request(.POST, websiteURL, parameters: myParameters) .responseJSON { 
    (response) -> Void in 
    if let value = response.result.value { 
     let json = JSON(value) 
     self.parseJSON(json) 
    } 
} 
} 
0

Замените responseString на responseJSON

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