मेरे पास जेसन है जो एक HTTP अनुरोध से पोस्ट किया गया है। मैं इसे प्रत्येक लूप के लिए उपयोग के लिए deserialize करने की कोशिश कर रहा हूँ। दुर्भाग्य से, इसका प्रारूप मेरे गधे को वस्तुओं की सूची के रूप में लात मार रहा है (मुझे विश्वास है)।

अब तक मेरे पास निम्नलिखित है:

dynamic jsonObj = JsonConvert.DeserializeObject(await req.ReadAsStringAsync());

foreach (var p in jsonObj.hireSchedules)
    {
     ///do something
    }

मेरा जेसन नीचे जैसा है:

{
"hireSchedules": [
    {
        "plant": "7246054",
        "num" : "79",
        "hire": "1137277"
     },
    {
        "plant": "7246055",
        "num" : "80",
        "hire": "1137278"
     }
    ]
}

मेरे पास निम्नलिखित वर्ग हैं:

public class HireSchedule
{
    public string plant { get; set; }
    public string num { get; set; }
    public string hire { get; set; }
}

public class RootObject
{
    public List<HireSchedule> hireSchedules { get; set; }
}

किसी भी सहायता की सराहना की जाएगी। धन्यवाद!

2
jradata 2 अक्टूबर 2019, 09:38
RootObject jsonObj = JsonConvert.DeserializeObject<RootObject>(await req.ReadAsStringAsync()); ?
 – 
Cid
2 अक्टूबर 2019, 09:41
मेरे फ़ोरैच लूप से पहले इसका उपयोग करते समय मुझे निम्न त्रुटि मिलती है: "foreach कथन 'रूटऑब्जेक्ट' प्रकार के चर पर काम नहीं कर सकता क्योंकि 'रूटऑब्जेक्ट' में 'GetEnumerator' के लिए सार्वजनिक इंस्टेंस परिभाषा नहीं है"
 – 
jradata
2 अक्टूबर 2019, 09:48
जब आपको यह त्रुटि मिलती है, तो आपका foreach स्टेटमेंट कैसा होता है?
 – 
Cid
2 अक्टूबर 2019, 09:50
ऊपर के रूप में: foreach (jsonObj.hireSchedule में var p) {//stuff }
 – 
jradata
2 अक्टूबर 2019, 09:51
1
हाँ, वह कॉपी/पेस्ट में एक त्रुटि थी
 – 
jradata
2 अक्टूबर 2019, 10:06

2 जवाब

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

चूंकि आप पहले से ही कक्षाओं को परिभाषित कर चुके हैं, इसलिए उनमें इसे deserialize करना काफी आसान है। फिर आपके पास दृढ़ता से टाइप की गई कक्षा है और आईडीई आपको संपत्तियों तक पहुंचने में मदद करने में सक्षम होना चाहिए।

var json = File.ReadAllText("json1.json");
var root = JsonConvert.DeserializeObject<RootObject>(json);

foreach (var p in root.hireSchedules)
{
    ///do something
}
4
404 2 अक्टूबर 2019, 09:45
इस पद्धति का उपयोग करने पर मुझे निम्न त्रुटि प्राप्त होती है: ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट के उदाहरण पर सेट नहीं है। तो, यह डिसेरिएलाइज़िंग सही नहीं है।
 – 
jradata
2 अक्टूबर 2019, 10:05
ऐसा लगता है कि आपका JSON आपकी कक्षाओं से मेल नहीं खाता है, भले ही आपने ऊपर दिए गए उदाहरण में यह करता है।
 – 
Llama
2 अक्टूबर 2019, 10:33

एक तरीका है Newtonsoft.json nuget का उपयोग करना जो वास्तव में बहुत शक्तिशाली है, इसलिए

var files = JObject.Parse(YourJSON);
var recList = files.SelectTokens("$..hireSchedules").ToList();
foreach (JObject obj in recList.Children())
 {
   foreach (JProperty prop in obj.Children())
      {
        var key = prop.Name.ToString();
        var value = prop.Value.ToString();
         //Do your stuffs here
      }

  }
0
Prany 2 अक्टूबर 2019, 18:05