Reputation: 5
I have a response from an API that looks like this
{
"Global": {
"NewConfirmed": 53041,
"TotalConfirmed": 2142221,
"NewDeaths": 3583,
"TotalDeaths": 168885,
"NewRecovered": 40194,
"TotalRecovered": 1005926
},
"Countries": [
{
"Country": "ALA Aland Islands",
"CountryCode": "AX",
"Slug": "ala-aland-islands",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-05-03T17:59:05Z"
},
{
"Country": "Afghanistan",
"CountryCode": "AF",
"Slug": "afghanistan",
"NewConfirmed": 134,
"TotalConfirmed": 2469,
"NewDeaths": 4,
"TotalDeaths": 72,
"NewRecovered": 21,
"TotalRecovered": 331,
"Date": "2020-05-03T17:59:05Z"
},
{
"Country": "Albania",
"CountryCode": "AL",
"Slug": "albania",
"NewConfirmed": 7,
"TotalConfirmed": 789,
"NewDeaths": 0,
"TotalDeaths": 31,
"NewRecovered": 31,
"TotalRecovered": 519,
"Date": "2020-05-03T17:59:05Z"
}
}
I need to map the result my Model class that looks like this
public class Cases
{
public class Global
{
[JsonProperty("NewConfirmed")]
public int NewConfirmed { get; set; }
[JsonProperty("TotalConfirmed")]
public int TotalConfirmed { get; set; }
[JsonProperty("NewDeaths")]
public int NewDeaths { get; set; }
[JsonProperty("TotalDeaths")]
public int TotalDeaths { get; set; }
[JsonProperty("NewRecovered")]
public int NewRecovered { get; set; }
[JsonProperty("TotalRecovered")]
public int TotalRecovered { get; set; }
[JsonProperty("Countries")]
public Country[] countries { get; set; }
}
public class Country
{
[JsonProperty("Country")]
public string country { get; set; }
[JsonProperty("CountryCode")]
public string countryCode { get; set; }
[JsonProperty("NewConfirmed")]
public int NewConfirmed { get; set; }
[JsonProperty("TotalConfirmed")]
public int TotalConfirmed { get; set; }
[JsonProperty("NewDeaths")]
public int NewDeaths { get; set; }
[JsonProperty("TotalDeaths")]
public int TotalDeaths { get; set; }
[JsonProperty("NewRecovered")]
public int NewRecovered { get; set; }
[JsonProperty("TotalRecovered")]
public int TotalRecovered { get; set; }
}
public class Countries
{
[JsonProperty("Global")]
public Cases.Global global { get; set; }
[JsonProperty("Countries")]
public Country[] countries { get; set; }
}
}
A have a void Get method that looks like this:
//create a web request object
WebRequest reqObject = WebRequest.Create(apiUrl);
//request method
reqObject.Method = "GET";
//create a response object
HttpWebResponse httpWebResponseObj = (HttpWebResponse)reqObject.GetResponse();
//capture the response stream
using (Stream stream = httpWebResponseObj.GetResponseStream())
{
//stream reader -> pass in stream
StreamReader streamReader = new StreamReader(stream);
//grab the stream response and put it in a strign variable
string readResponse = streamReader.ReadToEnd();
//close the streamreader
streamReader.Close();
//deserialize stream reader
var deserializedObj = JsonConvert.DeserializeObject<Cases>(readResponse);
//foreach here
}
I'm just not sure where to go from here. Can anyone point me in the right direction? Also, if you could confirm that the model class is correct, I'd appreciate it. Thank you
Upvotes: 0
Views: 68
Reputation: 1625
I don't like inner classes so my thought is that the model should be :
public class Cases
{
// "Global" section
[JsonProperty("Global")]
public Global Global { get; set; }
// "Countries" : list of Country
[JsonProperty("Countries")]
public List<Country> Countries { get; set; }
}
public class Global
{
[JsonProperty("NewConfirmed")]
public int NewConfirmed { get; set; }
[JsonProperty("TotalConfirmed")]
public int TotalConfirmed { get; set; }
[JsonProperty("NewDeaths")]
public int NewDeaths { get; set; }
[JsonProperty("TotalDeaths")]
public int TotalDeaths { get; set; }
[JsonProperty("NewRecovered")]
public int NewRecovered { get; set; }
[JsonProperty("TotalRecovered")]
public int TotalRecovered { get; set; }
}
// !!! You did not map "Slug" and "Date" !!!
public class Country
{
[JsonProperty("Country")]
public string country { get; set; }
[JsonProperty("CountryCode")]
public string countryCode { get; set; }
[JsonProperty("NewConfirmed")]
public int NewConfirmed { get; set; }
[JsonProperty("TotalConfirmed")]
public int TotalConfirmed { get; set; }
[JsonProperty("NewDeaths")]
public int NewDeaths { get; set; }
[JsonProperty("TotalDeaths")]
public int TotalDeaths { get; set; }
[JsonProperty("NewRecovered")]
public int NewRecovered { get; set; }
[JsonProperty("TotalRecovered")]
public int TotalRecovered { get; set; }
}
Upvotes: 1