JSON स्ट्रिंग को JSON ऑब्जेक्ट में कनवर्ट करें c #


161

मेरे पास यह स्ट्रिंग मेरे डेटाबेस में संग्रहीत है:

str = "{ "context_name": { "lower_bound": "value", "upper_bound": "value", "values": [ "value1", "valueN" ] } }"

यह स्ट्रिंग पहले से ही JSON फॉर्मेट में है, लेकिन मैं इसे एक जोबजेक्ट या JSON ऑब्जेक्ट में बदलना चाहता हूं।

JObject json = new JObject();

मैंने json = (JObject)str;कलाकारों की कोशिश की लेकिन यह काम नहीं किया तो मैं इसे कैसे कर सकता हूं?

जवाबों:


298

JObjectइसके Parseलिए विधि निर्धारित करता है :

JObject json = JObject.Parse(str);

आप Json.NET प्रलेखन का उल्लेख करना चाहते हो सकता है ।


5
यह {string} में कनवर्ट हो जाएगा, आपके स्ट्रिंग में अतिरिक्त कर्ली ब्रैकेट्स जोड़ देगा।
वासिल वेलेव

62

यदि आप नहीं चाहते या टाइप की गई वस्तु की आवश्यकता नहीं है, तो कोशिश करें:

using Newtonsoft.Json;
// ...   
dynamic json  = JsonConvert.DeserializeObject(str);

या टाइप की गई वस्तु के लिए प्रयास करें:

Foo json  = JsonConvert.DeserializeObject<Foo>(str)

टी की सूची के साथ यह भी होगा काम करता है, तो आने वाली json स्ट्रिंग संग्रह होता: सूची <फू> json = JsonConvert.DeserializeObject <सूची <फू >> (एसटीआर)
ए वर्मा

22

यह काम

    string str = "{ 'context_name': { 'lower_bound': 'value', 'pper_bound': 'value', 'values': [ 'value1', 'valueN' ] } }";
    JavaScriptSerializer j = new JavaScriptSerializer();
    object a = j.Deserialize(str, typeof(object));

नाम 'JavaScriptSerializer' के लिए: System.Web.Script.Serialization;
बर्नीएसएफ

निश्चित तौर पर मेरे लिए काम किया। एकल उद्धरण के लिए डबल कोट्स को प्रतिस्थापित करने के बाद जोबजेक्ट का उपयोग करते हुए, यह ट्रिक किया। धन्यवाद!!!
कार्लोस पारा

System.Web.Script.Serialization केवल .Net पूर्ण ढांचे में उपलब्ध है।
norgie

7

एक और लक्ष्य को प्राप्त करने का एक दिलचस्प तरीका है जो एक बहुत शक्तिशाली टूल के साथ जोंस पर एक मजबूत प्रकार का वर्ग आधार है जिसे मैंने कुछ दिन पहले पहली बार कारोबार करने वाले json परिणाम को कक्षाओं में अनुवाद करने के लिए उपयोग किया है

एक सरल उपकरण है: अपने json स्रोत पेस्ट को कॉपी करें और कुछ सेकंड में आपके पास एक जोरदार टाइप्ड क्लास जसन ओरिएंटेड होगा । इस तरीके से आप इन वर्गों का उपयोग करेंगे जो अधिक शक्तिशाली हैं और बस उपयोग करने के लिए हैं।

मुझे उम्मीद है कि आपकी मदद कर सकता है


मुझे जिस चीज की जरूरत थी! इसलिए मुझे जावास्क्रिप्ट में बनाई गई किसी चीज़ से एक जटिल वर्ग संरचना को परिभाषित नहीं करना है
निकोलस जेड

जबकि इस सवाल का जवाब नहीं है। यह एक विशाल समय उपकरण है।
वलमास


1

यह मेरे लिए काम करता है JsonConvert

var result = JsonConvert.DeserializeObject<Class>(responseString);

0

जोबजेक्ट के मामले में यह काम नहीं करता है यह सरल जोंस प्रारूप डेटा के लिए काम करता है। मैंने नीचे दिए गए json प्रारूप डेटा के अपने डेटा को टाइप में डिसेररलाइज़ करने की कोशिश की है, लेकिन प्रतिक्रिया नहीं मिली।

इस Json के लिए

{
  "Customer": {
    "id": "Shell",
    "Installations": [
      {
        "id": "Shell.Bangalore",
        "Stations": [
          {
            "id": "Shell.Bangalore.BTM",
            "Pumps": [
              {
                "id": "Shell.Bangalore.BTM.pump1"
              },
              {
                "id": "Shell.Bangalore.BTM.pump2"
              },
              {
                "id": "Shell.Bangalore.BTM.pump3"
              }
            ]
          },
          {
            "id": "Shell.Bangalore.Madiwala",
            "Pumps": [
              {
                "id": "Shell.Bangalore.Madiwala.pump4"
              },
              {
                "id": "Shell.Bangalore.Madiwala.pump5"
              }
            ]
          }
        ]
      }
    ]
  }
}

0

यदि आपके JSon स्ट्रिंग में एकल उद्धरण के बजाय "" डबल उद्धरण है और अगली पंक्ति के एक संकेतक के रूप में \ n है तो आपको इसे हटाने की आवश्यकता है क्योंकि यह उचित JSon स्ट्रिंग नहीं है, उदाहरण नीचे दिखाया गया है:

            SomeClass dna = new SomeClass ();
            string response = wc.DownloadString(url);
            string strRemSlash = response.Replace("\"", "\'");
            string strRemNline = strRemSlash.Replace("\n", " ");
            // Time to desrialize it to convert it into an object class.
            dna = JsonConvert.DeserializeObject<SomeClass>(@strRemNline);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.