0

I have an API response like below,

{
"Drivers.Pandemic.PeopleCount": {
"Value": "94",
"LastUpdatedTime": "2022-02-17T09:53:43.7418837+05:30",
"Status": "OK",
"HighLimit": 1000.0,
"LowLimit": 0.0,
"AlarmValue": null
},
"Drivers.Hospitality.Bollards": {
"Value": "1",
"LastUpdatedTime": "2022-02-17T09:53:42.5938448+05:30",
"Status": "OK",
"HighLimit": 1.0,
"LowLimit": 0.0,
"AlarmValue": null
},
"Drivers.Hospitality.FireAlarm": {
"Value": "0",
"LastUpdatedTime": "2022-02-17T09:53:02.1132161+05:30",
"Status": "OK",
"HighLimit": 1.0,
"LowLimit": 0.0,
"AlarmValue": "1"
}
}

I need to deserialize this response and print it using c#. How can I do this?

JINS M.THOMAS
  • 121
  • 10

1 Answers1

1

Well, as the JSON you're getting from the API is a little WEIRD youn need a little different aproach to the 'normal' serializacion.

Better aproach is to get help of a class with each element and a dictionary

Class:

public class Drivers
    {
        public string Value { get; set; }
        public DateTime LastUpdatedTime { get; set; }
        public string Status { get; set; }
        public double HighLimit { get; set; }
        public double LowLimit { get; set; }
        public object AlarmValue { get; set; }
    }

and then deserialize using Newtonsoft

var myDeserializedDict= JsonConvert.DeserializeObject<Dictionary<string, Drivers>>(text);

After this you got a 'normal' collection inside the Dictionary and can use it as you wish:

        foreach (KeyValuePair<string, Drivers> item in myDeserializedDict) 
        {
            Console.WriteLine(item.Key + " (Status): " + item.Value.Status.ToString());
            Console.WriteLine(item.Key + " (LastUpdated): " + item.Value.LastUpdatedTime.ToString());
[...]
        }
J.Salas
  • 1,268
  • 1
  • 8
  • 15