Parse json string with JsonConvert C #

I get json string from external web service. I would like to store events from the events array in my database. How can I get a List<FacebookEvents> ?

My current attempt does not work: List< FacebookEvents > my_obj = JsonConvert.DeserializeObject < FacebookEvents > (jsonString);

Json source:

 { "events": [{ "id": "163958810691757", "name": "3Bridge Records presents inTRANSIT w/ David Kiss, Deep Woods, Eric Shans", "coverPicture": "https://scontent.xx.fbcdn.net/t31.0-8/s720x720/13679859_10153862492796325_8533542782240254857_o.jpg", "profilePicture": "https://scontent.xx.fbcdn.net/v/t1.0-0/c133.0.200.200/p200x200/13872980_10153862492796325_8533542782240254857_n.jpg?oh=a46813bbf28ad7b8bffb88acd82c7c71&oe=581EF037", "description": "Saturday, August 20th.\n\nJoin the 3Bridge Records team for another night of sound and shenanigans - as we send Deep Woods & David Kiss out to Burning Man & belatedly celebrate Slav Ka debut release on the label - \"Endless\" - out May 14th, featuring a remix by Mr. Shans.\n\nDavid Kiss (House of Yes)\nhttps://soundcloud.com/davidkiss\n\nDeep Woods (3Bridge Records)\nhttps://soundcloud.com/deep-woods\n\nEric Shans (3Bridge Records)\nhttps://soundcloud.com/eric-shans\n\nSlav Ka (3Bridge Records)\nhttps://soundcloud.com/slinkyslava\n\nFree before 12, $10 after (+ 1 comp well drink). $5 presale available on RA.\n\nhttps://www.residentadvisor.net/event.aspx?863815\n\nStay dope, Brooklyn.", "distance": "203", "startTime": "2016-08-20T22:00:00-0400", "timeFromNow": 481946, "stats": { "attending": 44, "declined": 3, "maybe": 88, "noreply": 1250 }, "venue": { "id": "585713341444399", "name": "TBA Brooklyn", "coverPicture": "https://scontent.xx.fbcdn.net/v/t1.0-9/s720x720/13932666_1397749103574148_4391608711361541993_n.png?oh=2d82be3a458d1ce9ac8fab47cdbc6e26&oe=585E6545", "profilePicture": "https://scontent.xx.fbcdn.net/v/t1.0-1/p200x200/12049351_1300865083262551_8221231831784471629_n.jpg?oh=a30798841ad60dfe5cfabaa4e803c3ad&oe=5854DFB9", "location": { "city": "Brooklyn", "country": "United States", "latitude": 40.711217064583, "longitude": -73.966384349735, "state": "NY", "street": "395 Wythe Ave", "zip": "11249" } } }, ... ], "metadata": { "venues": 1, "venuesWithEvents": 1, "events": 4 }} class FacebookEvents { //[JsonProperty(PropertyName = "id")] public string id { get; set; } public string name { get; set; } public string coverPicture { get; set; } public string profilePicture { get; set; } public string description { get; set; } public string distance { get; set; } public string startTime { get; set; } public string timeFromNow { get; set; } public Stats stats { get; set; } } class Stats { public string attending { get; set; } public string declined { get; set; } public string maybe { get; set; } public string noreply { get; set; } } class Venue { public string id { get; set; } public string name { get; set; } public string coverPicture { get; set; } public string profilePicture { get; set; } public Location location { get; set; } } class Location { public string city { get; set; } public string country { get; set; } public string latitude { get; set; } public string longitude { get; set; } public string state { get; set; } public string street { get; set; } public string zip { get; set; } } 
+5
source share
2 answers

You are missing your RootObject , which contains List<Event> and Metadata . Full example

 public class RootObject { public List<Event> events { get; set; } public Metadata metadata { get; set; } } public class Stats { public int attending { get; set; } public int declined { get; set; } public int maybe { get; set; } public int noreply { get; set; } } public class Location { public string city { get; set; } public string country { get; set; } public double latitude { get; set; } public double longitude { get; set; } public string state { get; set; } public string street { get; set; } public string zip { get; set; } } public class Venue { public string id { get; set; } public string name { get; set; } public string coverPicture { get; set; } public string profilePicture { get; set; } public Location location { get; set; } } public class Event { public string id { get; set; } public string name { get; set; } public string coverPicture { get; set; } public string profilePicture { get; set; } public string description { get; set; } public string distance { get; set; } public string startTime { get; set; } public int timeFromNow { get; set; } public Stats stats { get; set; } public Venue venue { get; set; } } public class Metadata { public int venues { get; set; } public int venuesWithEvents { get; set; } public int events { get; set; } } 

This will work:

 var result = JsonConvert.DeserializeObject<RootObject>(jsonString); 

EDIT:

At first it is JSON , here, how you can get information about the place.

 foreach(var item in result.events) { Console.WriteLine(item.venue.name); } 
+3
source

you need a root object that has an events property to store the collection

 public class RootObject { public IList<FacebookEvents> events {get;set;} } 

and then you can access events

 var root = JsonConvert.DeserializeObject<RootObject>(jsonString); var events = root.events; 
+1
source

Source: https://habr.com/ru/post/1260881/


All Articles