मान लीजिए मेरे पास एक JSON फ़ाइल है जो निम्न की तरह दिखती है:

    [
  {
    "CheckName": "test2",
    "Times": [
      "0001-01-01T00:00:00",
      "2019-02-27T09:29:39.5654213"
    ]
  },
  {
    "CheckName": "test",
    "Times": [
      "0001-01-01T00:00:00",
      "2019-02-27T09:29:39.574397"
    ]
  }
]

जिसे मैं नीचे के रूप में लूप कर रहा हूं:

string Config = File.ReadAllText(@"C:\Scripts\Config.json");
dynamic ConfigFile = JsonConvert.DeserializeObject(Config);

foreach (var item in ConfigFile) {
    string CurrentCheck = item.CheckName;
    DateTime LastRun = item.Times[0];
    DateTime NextRun = item.Times[1];
    //Do stuff with the read values here
}

मुझे टेस्ट 2 के पहली बार मूल्य को अपडेट करने की आवश्यकता है, और फिर, बाद में, इसे परीक्षण पर अपडेट करें। हालांकि, इस JSON फ़ाइल में 50+ आइटम हो सकते हैं, और मुझे नहीं पता कि मैं फ़ाइल में कहां हूं, फ़ोरैच लूप के अलावा (मैं JSON पढ़ रहा हूं, फिर मुझे आवश्यक मानों को पढ़ने के लिए उस पर लूपिंग कर रहा हूं) , लेकिन मुझे परिवर्तन लिखने की जरूरत है)। क्या मेरे सामने आने पर प्रत्येक विशिष्ट मान को अपडेट करना संभव है, और फिर अन्य मानों को बनाए रखते हुए JSON को डिस्क पर वापस लिखना संभव है?

वैकल्पिक रूप से, क्या मुझे शायद इस कार्य को आसान बनाने के लिए मेरा JSON कैसे दिखता है, इसे बदलने की आवश्यकता है।

0
Lewis Smith 27 फरवरी 2019, 12:31

1 उत्तर

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

आपने अपने JSON को किसी ऑब्जेक्ट में डिसेरिएलाइज़ किया है, आपके मामले में जिसे ConfigFile कहा जाता है।

आप ConfigFile में परिवर्तन कर सकते हैं, जो एक गतिशील वस्तु है, और फिर अपने JSON स्ट्रिंग को फिर से प्राप्त करने के लिए फिर से क्रमबद्ध करें।

आपको अपने JSON को ऑब्जेक्ट्स में डिसेरिएलाइज़ करना आसान हो सकता है, बजाय इसके कि आप उन पर डायनामिक का उपयोग करें, जो विशेष रूप से नेस्टेड ऑब्जेक्ट्स को संभालने में मदद करता है, बिना आपके कोड के बहुत गन्दा हो जाता है।

तथ्य यह है कि आप नहीं जानते कि आप लूप में कहां हैं, इससे कोई फर्क नहीं पड़ता, क्योंकि नेस्टेड सहित ऑब्जेक्ट संदर्भ प्रकार हैं। इसका मतलब है कि हालांकि आपने item नाम की कोई चीज़ बनाई है, फिर भी यह आइटम के लिए केवल एक संदर्भ है इसलिए इसे एक ही स्थान पर संशोधित करने से यह सभी स्थानों पर संशोधित हो जाती है। यदि इसका कोई औचित्य हो।

2
NibblyPig 27 फरवरी 2019, 09:34