मेरी परियोजना में एक तृतीय पक्ष वेब एपीआई है जो निम्न प्रारूप में एक जेसन स्ट्रिंग देता है (शुरुआती और समाप्ति घुंघराले ब्रेसिज़ सहित):

{ 
   "866968030210604":{
      "dt_server":"2019-02-07 12:21:27",
      "dt_tracker":"2019-02-07 12:21:27",
      "lat":"28.844968",
      "lng":"76.858502",
      "altitude":"0",
      "angle":"154",
      "speed":"9",
      "params":{
         "pump":"0",
         "track":"1",
         "bats":"1",
         "acc":"0",
         "batl":"4"
      },
      "loc_valid":"1"
   },
   "866968030221205":{
      "dt_server":"2019-02-07 12:20:24",
      "dt_tracker":"2019-02-07 12:19:41",
      "lat":"28.845904",
      "lng":"77.096063",
      "altitude":"0",
      "angle":"0",
      "speed":"0",
      "params":{
         "pump":"0",
         "track":"1",
         "bats":"1",
         "acc":"0",
         "batl":"4"
      },
      "loc_valid":"1"
   },
   "866968030212030":{
      "dt_server":"0000-00-00 00:00:00",
      "dt_tracker":"0000-00-00 00:00:00",
      "lat":"0",
      "lng":"0",
      "altitude":"0",
      "angle":"0",
      "speed":"0",
      "params":null,
      "loc_valid":"0"
   }
}

मैं इसे आगे की प्रक्रिया के लिए एसी # क्लास ऑब्जेक्ट में deserialize करना चाहता हूँ। मैंने इसके लिए निम्न वर्ग संरचना बनाई है:

class Params
{
    public string pump { get; set; }
    public string track { get; set; }
    public string bats { get; set; }
    public string acc { get; set; }
    public string batl { get; set; }
}

class GPSData
{
    public string dt_server { get; set; }
    public string dt_tracker { get; set; }
    public string lat { get; set; }
    public string lng { get; set; }
    public string altitude { get; set; }
    public string angle { get; set; }
    public string speed { get; set; }
    public Params ObjParams { get; set; }
    public string loc_valid { get; set; }
}

और मैं deserialize करने के लिए निम्नलिखित कोड की कोशिश कर रहा हूँ:

JavaScriptSerializer jSerObj = new JavaScriptSerializer();

List<GPSData> lstGPSData = (List<GPSData>)jSerObj.Deserialize(json, typeof(List<GPSData>));

लेकिन हर बार यह Deserialize () विधि कहलाने के बाद वर्ग की प्रत्येक संपत्ति को निर्दिष्ट NULL मान दिखा रहा है। कृपया इस पर मेरी सहायता करें।

0
DeepakVerma 7 फरवरी 2019, 15:33

1 उत्तर

सबसे बढ़िया उत्तर

आपका जेसन सूची प्रारूप में नहीं है इसलिए List<> को अक्रमांकन करना काम नहीं है

तो आपको इसे Dictionary<string, GPSData> में डिसेरिएलाइज़ करना होगा जैसे

JavaScriptSerializer jSerObj = new JavaScriptSerializer();

Dictionary<string, GPSData> lstGPSData = (Dictionary<string, GPSData>)jSerObj.Deserialize(json, typeof(Dictionary<string, GPSData>));

उपयोग:

foreach (var item in lstGPSData)
{
    string key = item.Key;
    GPSData gPSData = item.Value;
}

साथ ही, आप उपरोक्त शब्दकोश से अपने सभी GPSData को सूचीबद्ध कर सकते हैं जैसे,

List<GPSData> gPSDatas = lstGPSData.Values.ToList();

आउटपुट: (डीबगर से)

enter image description here

2
er-sho 7 फरवरी 2019, 16:04