2016-12-09 6 views
1

Я пишу код в swift 3 для анализа запроса в формате json в результате запроса http.SwiftyJSON parse json query

формат JSON является:

JSON: { 
base = stations; 
coord =  { 
    lat = "23.9"; 
    lon = "42.89"; 
}; 
weather =  (
      { 
     description = mist; 
     icon = 50n; 
     id = 701; 
     main = Mist; 
    }, 
      { 
     description = fog; 
     icon = 50n; 
     id = 741; 
     main = Fog; 
    } 
); 
wind =  { 
    deg = "222.506"; 
    speed = "1.72"; 
};} 

Мой код:

Alamofire.request(url).responseJSON { response in 

     if let a = response.result.value { 

      let jsonVar = JSON(a) 

      if let resDati = jsonVar["base"].string { 
       print(resDati as String) // <- OK 
      } 

      if let dati2 = jsonVar["weather"].array { 

       for item in dati2 { 

        print(" > \(item["main"])") // <- OK 

       } 

      } 

     } else { 
      print(Error.self) 
     } 

    } 

Проблема заключается в "коорд" и "ветер" данных у меня есть попытка:

if let dati4 = jsonVar["wind"].array { 

    for item in dati4 { 

     print("-- \(item)") 

    } } 

Я не могу распечатать родственников данных, чтобы «ветер» и «координировать» в формате json.

Как это разрешить.

спасибо.

ответ

2

Ключ wind содержит словарь, а не массив, вы можете получить значения deg и speed используя SwiftyJSON с этим кодом:

if let wind = jsonVar["wind"].dictionary, 
    let deg = wind["deg"]?.double, 
    let speed = wind["speed"]?.double { 
    print(deg, speed) 
} 

coord работы соответственно

if let coord = jsonVar["coord"].dictionary, 
    let lat = coord["lat"]?.double, 
    let lon = coord["lon"]?.double { 
    print(lat, lon) 
} 

Примечание: Все значения имеют тип Double, json format вводит в заблуждение.

+0

Я пишу ваш код, но результат 'deg' и 'speed' равен нулю. –

+0

Если 'jsonVar [" base "]' что-то печатает ('<- OK'), мой код должен работать. слишком. – vadian

+0

Я добавил ваш код на мой, и в консоли он печатает «базу» и «погоду», но не «ветер», поэтому у меня есть сдвиг «let deg» и «let speed» от «if» и в консоли я вижу «ноль ноль». –

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

  • Нет связанных вопросов^_^