Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to deserialize oData JSON?

Tags:

json

c#

odata

I am trying to use the Northwind OData service:

http://services.odata.org/V3/OData/OData.svc/Products?$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 odata.metadata part and the fact that there are 2 odata.type records there (not sure what they are).

Is there an easy way to do this?

like image 840
Graeme Avatar asked Nov 08 '14 18:11

Graeme


1 Answers

Using Json.Net

using (var client = new HttpClient()) {     var json = await client.GetStringAsync("http://services.odata.org/V3/OData/OData.svc/Products?$format=json");     var odata = JsonConvert.DeserializeObject<OData>(json); } 

public class Value {     [JsonProperty("odata.type")]     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 {     [JsonProperty("odata.metadata")]     public string Metadata { get; set; }     public List<Value> Value { get; set; } } 
like image 167
L.B Avatar answered Sep 22 '22 23:09

L.B