Graeme Graeme - 1 year ago 657
C# Question

How to deserialize oData JSON?

I am trying to use the Northwind OData service:$format=json

and deserialize it to a collection of products:

using (var client = new HttpClient())
HttpResponseMessage response = await client.GetAsync(new Uri(url));
ObservableCollection<Product> products = await response.Content.ReadAsAsync<ObservableCollection<Product>>();

But the serializer doesn't seem to like the
part and the fact that there are 2
records there (not sure what they are).

Is there an easy way to do this?

Answer Source

Using Json.Net

using (var client = new HttpClient())
    var json = await client.GetStringAsync("$format=json");
    var odata = JsonConvert.DeserializeObject<OData>(json);

public class Value
    public string Type { set; get; }
    public int ID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public DateTime ReleaseDate { get; set; }
    public DateTime? DiscontinuedDate { get; set; }
    public int Rating { get; set; }
    public double Price { get; set; }

public class OData
    public string Metadata { get; set; }
    public List<Value> Value { get; set; }
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download