2015-03-20 3 views
1

У меня есть этот JSon файл:Получить данные из Json файла C#

{"id":88319,"dt":1345284000,"name":"Benghazi", 
"coord":{"lat":32.12,"lon":20.07}, 
"main":{"temp":306.15,"pressure":1013,"humidity":44,"temp_min":306,"temp_max":306}, 
"wind":{"speed":1,"deg":-7}, 
"weather":[ 
      {"id":520,"main":"rain","description":"light intensity shower rain","icon":"09d"}, 
      {"id":500,"main":"rain","description":"light rain","icon":"10d"}, 
      {"id":701,"main":"mist","description":"mist","icon":"50d"} 
      ], 
"clouds":{"all":90}, 
"rain":{"3h":3}} 

Я могу читать «имя»: «Бенгази» нормально, но «ТЕМП»: 306,15 Я не могу читать, потому что он находится внутри " основной ": {}

Я использую простой способ чтения, вот мой C# код:

public class SkyWeather 
{ 
    string path = @"http://api.openweathermap.org/data/2.5/weather?q=Uberaba,br&units=metric"; 

    string name; 
    string temp; 

    public string Name { get { return name; } set { name = value; } } 
    public string Temp { get { return temp; } set { temp = value; } } 

    public string GetTemperature() 
    { 
     var json = ""; 

     try 
     { 
      json = new WebClient().DownloadString(path); 
     } 
     catch (Exception e) 
     { 
      return e.ToString(); 
     } 

     string text = (string)json; 

     SkyWeather w = JsonConvert.DeserializeObject<SkyWeather>(text); 

     return w.temp; 
    } 
} 

Как я могу читать?

+1

Ну, у вас уже есть код, я вижу - так что происходит, когда вы пытаетесь его использовать? –

+0

Он возвращает '0' для меня. –

+2

Что такое определение класса SkyWeather? –

ответ

2

Предполагая, что SkyWeather представляет свойства в вашей «основной» объект, вам нужно создать еще один объект, который представляет объект оберточной:

public class RootObject 
{ 
    public int id { get; set; } 
    public int dt { get; set; } 
    public string name { get; set; } 
    public SkyWeather main { get; set; } 
} 

... а потом:

RootObject w = JsonConvert.DeserializeObject<RootObject>(text); 

    return w.main.temp; 
+0

Но «temp» не существует внутри main в RootObject. –

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