У меня десериализация с использованием xmlserializer, но с datacontract у меня нет идеи, мне нужно десериализовать с Datacontract Как десериализовать с datacontract это wather api. Когда я десериализирую с помощью XmlSerializer, он работает как на фотографии
, используя XmlSerializer, работа выглядит в изображении
Но когда я использую DataContract, не работает
посмотрите, когда я использую DataContract у меня есть исключение
Это код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.Xml;
using RestSharp;
using RestSharp.Deserializers;
using System.IO;
using System.Xml.Serialization;
namespace DataContractd
{
class Program
{
const string URL = "http://api.worldweatheronline.com/premium/v1/weather.ashx?key=c37f984779f14beb9bf01943201104&q=Pristina&num_of_days=5";
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create(URL);
DataContractSerializer serializer = new DataContractSerializer(typeof(data));
data data = (data)serializer.ReadObject(reader);
Console.WriteLine(data.request.query);
}
}
public class data
{
public request request { get; set; }
public current_condition current_condition { get; set; }
public weather weather { get; set; }
}
public class request
{
[XmlElement("type")]
public string _type { get; set; }
public string query { get; set; }
}
public class current_condition
{
public TimeSpan observation_time { get; set; }
public int temp_C { get; set; }
public int temp_F { get; set; }
public int weatherCode { get; set; }
public string weatherIconUrl { get; set; }
public string weatherDesc { get; set; }
public int windspeedMiles { get; set; }
public int windspeedKmph { get; set; }
public int winddirDegree { get; set; }
public string winddir16Point { get; set; }
public decimal precipMM { get; set; }
public decimal precipInches { get; set; }
public int humidity { get; set; }
public int visibility { get; set; }
public int visibilityMiles { get; set; }
public int pressure { get; set; }
public int pressureInches { get; set; }
public int cloudcover { get; set; }
public int FeelsLikeC { get; set; }
public int FeelsLikeF { get; set; }
public int uvIndex { get; set; }
}
public class weather
{
public DateTime date { get; set; }
public astronomy astronomy { get; set; }
public int maxtempC { get; set; }
public int maxtempF { get; set; }
public int mintempC { get; set; }
public int mintempF { get; set; }
public int avgtempC { get; set; }
public int avgtempF { get; set; }
public decimal totalSnow_cm { get; set; }
public decimal sunHour { get; set; }
public int uvIndex { get; set; }
[XmlElement("hourly")]
public List<hourly> hourly { get; set; }
}
public class astronomy
{
public TimeSpan sunrise { get; set; }
public TimeSpan sunset { get; set; }
public TimeSpan moonrise { get; set; }
public TimeSpan moonset { get; set; }
public string moon_phase { get; set; }
public int moon_illumination { get; set; }
}
public class hourly
{
public int time { get; set; }
public int tempC { get; set; }
public int tempF { get; set; }
public int windspeedMiles { get; set; }
public int windspeedKmph { get; set; }
public int winddirDegree { get; set; }
public string winddir16Point { get; set; }
public int weatherCode { get; set; }
public string weatherIconUrl { get; set; }
public string weatherDesc { get; set; }
public decimal precipMM { get; set; }
public decimal precipInches { get; set; }
public int humidity { get; set; }
public int visibility { get; set; }
public int visibilityMiles { get; set; }
public int pressure { get; set; }
public int pressureInches { get; set; }
public int cloudcover { get; set; }
public int HeatIndexC { get; set; }
public int HeatIndexF { get; set; }
public int DewPointC { get; set; }
public int DewPointF { get; set; }
public int WindChillC { get; set; }
public int WindChillF { get; set; }
public int WindGustMiles { get; set; }
public int WindGustKmph { get; set; }
public int FeelsLikeC { get; set; }
public int FeelsLikeF { get; set; }
public int chanceofrain { get; set; }
public int chanceofremdry { get; set; }
public int chanceofwindy { get; set; }
public int chanceofovercast { get; set; }
public int chanceofsunshine { get; set; }
public int chanceoffrost { get; set; }
public int chanceofhightemp { get; set; }
public int chanceoffog { get; set; }
public int chanceofsnow { get; set; }
public int chanceofthunder { get; set; }
public int uvIndex { get; set; }
}
}