2016-10-19 2 views
1

Так у меня есть JSON данные, возвращающийся из PHP файла:Как использовать JSONSerialization.jsonObject с неровным массивом (данные JSON) из PHP в SWIFT 3

{"is_success":1,"message":"Has sync","data":[{"id":"7","customer_id":"007"}]} 

И у меня есть быстрый код:

if var myJSON = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [NSDictionary] 
{ 
      for jsonDict in myJSON 
      { 
       var try: String = (jsonDict["customer_id"] as? String)! 
      } 
} 

По-видимому, он не войдет внутрь оператора if из-за [NSDictionary]. Я пробовал [String: AnyObject], [NSDictionary] и т. Д. Из других руководств, и это просто не сработает. Любые предложения по замене [NSDictionary]? Благодаря!

+0

Вы создаете массив словаря '[NSDictionary]' ... это должен быть словарь 'NSDictionary' .. в swift3 он должен быть' [String: Any] ' –

+0

@ EICaptainv2.0 я попробовал [String: Any] , он все равно не попадет в этот оператор if – ReversedcigoL

+0

'if let myJSON = попробуйте JSONSerialization.jsonObject (с помощью: data !, options: []) as? [String: Any] {print ("true")} '.. попробуйте это, он вернёт true –

ответ

1

Ваш ответ JSON - тип Dictionary не Array.

if let myJSON = try JSONSerialization.jsonObject(with: data!, options: []) as? [String : Any] { 
    //For getting customer_id try like this 
    if let data = myJSON["data"] as? [[String: Any]] { 
     for jsonDict in data { 
      var try = jsonDict["customer_id"] as? String 
     } 
    } 
} 

В Swift использовании Swift родной Dictionary и Array вместо NSDictionaryNSArray и точно так же, как я использовал в ответ.

+0

Я попытался «если var myJSON = попробуйте JSONSerialization.jsonObject (с: data !, options: .mutableContainers) как? [String: Any] {}", он все равно не войдет в оператор if – ReversedcigoL

+0

@ReversedcigoL Проверьте отредактированный ответ. –

+0

@ReversedcigoL Также используйте 'if let' вместо' if var', если вы не изменяете значение. –

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