C#. Как правильно десериализовать JSON?

Рейтинг: 0Ответов: 1Опубликовано: 25.02.2023

Захотел сделать приложение прогноза погоды, но не могу десериализовать json. То есть запрос я сделать могу, но когда пытаюсь десериализовать ответ, например, как в следующем коде получить температуру, у меня выводит 0.

        public class Current
    {
        public decimal temp_c { get; set; }
        public decimal temp_f { get; set; }
    }

    void Test(string url)
    {
        var client = new RestClient();
        var request = new RestRequest(url);
        var response = client.Get(request);
        var currentResp = JsonSerializer.Deserialize<Current>(response.Content);
    }

Пример.

{
"location": {
    "name": "London",
    "region": "City of London, Greater London",
    "country": "United Kingdom",
    "lat": 51.52,
    "lon": -0.11,
    "tz_id": "Europe/London",
    "localtime_epoch": 1677262192,
    "localtime": "2023-02-24 18:09"
},
"current": {
    "last_updated_epoch": 1677261600,
    "last_updated": "2023-02-24 18:00",
    "temp_c": 8.0,
    "temp_f": 46.4,
    "is_day": 0,
    "condition": {
        "text": "Partly cloudy",
        "icon": "//cdn.weatherapi.com/weather/64x64/night/116.png",
        "code": 1003
    }
}

Ответы

▲ 1Принят

Json который у вас не валиден. Возможно вы забыли добавить } в конец кода. Ваш Json содержит 2 объекта Location и Current нужно сделать так

    public class Root
    {
        public Current current { get; set; }
    }

    public class Current
    {

        public double temp_c { get; set; }
        public double temp_f { get; set; }
    }

var currentResp = JsonSerializer.Deserialize<Root>(response.Content);