How to deserialize json string in c#? -
मेरे पास एक जेसन स्ट्रिंग है:
[{"Id": [1], "मूल्य": "मायटेक्स्ट"}, {"आईडी": [20, 31], "मूल्य": "अन्य टेक्स्ट"}, {"आईडी": [2, 3, 4, 5], "मान": "MyText मैं इसे पार्स करना चाहता हूं (मेरी जेसन स्टिंग पहले से ही बाइट [] सरणी में है): निजी वर्ग MyClass {public int [] Id { प्राप्त; सेट; } सार्वजनिक स्ट्रिंग मान {get; सेट; }} Var स्ट्रीम = नया मेमोरीस्ट्रीम (जेसनएसटीआर); Var ser = नया DataContractJsonSerializer (टाइपफ (MyClass)); Var परिणाम = (MyClass) ser.ReadObject (स्ट्रीम);
लेकिन मुझे एक्सपेट्शन मिलता है:
संदेश 'प्रकार' मायनेमस्पेस.Test + MyClass '' सीरियलाइज़ नहीं किया जा सकता है। इसे डेटा कंटेंट अटैक विशेषता के साथ चिह्नित करने पर विचार करें, और अंकन अपने सभी सदस्यों को आप DataMemberAttribute विशेषता के साथ क्रमबद्ध करना चाहते हैं। यदि यह एक संग्रह है, तो उसे CollectionDataContractAttribute के साथ चिह्नित करने पर विचार करें। अन्य समर्थित प्रकारों के लिए Microsoft .NET Framework प्रलेख देखें। "
क्या यहां गलत है?
अपडेट
मैं अपनी कक्षा को संपादित करूंगा:
[डेटाकॉन्ट्रक्ट] निजी वर्ग मायक्लस {[डेटामेम्बर] सार्वजनिक इन्ट [] आईडी (प्राप्त करें; सेट; } [डेटामेम्बर] सार्वजनिक स्ट्रिंग मान {प्राप्त करें; सेट; }}
कैसे मैं किसी भी exeptions नहीं मिलता है, लेकिन deserialize के बाद मैं खाली क्षेत्रों के साथ वस्तु मिलता है।
Update2
जब मैंने पार्स जेसन स्ट्रिंग की कोशिश की:
{"Id": [1], "मान": "MyText"}
मेरा कोड ठीक काम करता है । लेकिन कैसे इस तरह की वस्तुओं की एक सरणी deserialize:
[{"आईडी": [1], "मूल्य": "MyText"}, {"आईडी": [2,6] , "मूल्य": "MyText2222"}, {"Id": [3,4], "मान": "MyText1111"}]
DataContractJsonSerializer के लिए आवश्यक है कि वर्गों को DataContract विशेषता (और DataMember वाले गुणों के साथ चिह्नित किया जाना चाहिए) , इस तरह से:
[डेटाकॉन्ट्रक्ट] पब्लिक क्लास इंसान [[डेटामेम्बर] पब्लिक इंट आईडी (प्राप्त); सेट; } [डेटामेम्बर] सार्वजनिक स्ट्रिंग नाम {get; सेट; }}
या JSON.NET लाइब्रेरी का उपयोग करें, जो विशेषताओं की आवश्यकता नहीं है, और बहुत आसान सिंटैक्स है:
JsonConvert.DeserializeObject (json);
Comments
Post a Comment