दिलचस्प पोस्ट
बैच स्क्रिप्ट के भीतर से मैं एक रजिस्ट्री कुंजी का मान कैसे प्राप्त करूं? IOS में एक uiviewcontroller में सभी सबव्यूज़ कैसे सूचीबद्ध करें? स्ट्रिंग का हैशोड () कैश 0 क्यों नहीं करता है? आप अपने अनुरोध का परीक्षण कैसे करते हैं। JQuery स्ट्रिंग चर? मेरी साइट से (देखें स्रोत) और (Ctrl + C) कैसे अक्षम करें छवियों में सरल रोशनी सुधार openCV c ++ डेटाबेस में बुलेट्स को सॉर्ट करें SMTP का उपयोग करते हुए पायथन से मेल भेजना JavaScript DOMParser आंतरिक एचटीएमएल और अन्य गुणों का उपयोग करता है Django संपादित करें फार्म के आधार पर जोड़ें फार्म? अंतराल द्वारा परिभाषित असतत श्रेणियों में निरंतर संख्यात्मक मानों को कनवर्ट करें क्या आप एनपीएम के साथ उपयोग करने के लिए अपने संगठन के लिए एक निजी रिपॉजिटरी की मेजबानी कर सकते हैं? ट्विटर ऑट कॉलबैक यूआरएल – लोकलहोस्ट डेवलपमेंट स्विफ्ट 3 IOS अनुकूलता regex c ++ 11 में कॉलबैक के साथ बदलते हैं?

JSON.NET लाइब्रेरी के बिना JSON को पार्स करने के लिए कैसे?

मैं विज़ुअल स्टूडियो 2011 पर विंडोज 8 के लिए मेट्रो का आवेदन करने की कोशिश कर रहा हूं। और जब मैं ऐसा करने की कोशिश कर रहा हूं, तो मुझे JSON.NET लाइब्रेरी के बिना JSON को पार्स करने के बारे में कुछ समस्याएं हैं (यह मेट्रो आवेदन अभी तक)

वैसे भी, मैं इसे पार्स करना चाहता हूं:

 { "name":"Prince Charming", "artist":"Metallica", "genre":"Rock and Metal", "album":"Reload", "album_image":"http:\/\/up203.siz.co.il\/up2\/u2zzzw4mjayz.png", "link":"http:\/\/f2h.co.il\/7779182246886" } 

वेब के समाधान से एकत्रित समाधान "JSON.NET लाइब्रेरी के बिना JSON को पार्स करने के लिए कैसे?"

आप सिस्टम में पाए जाने वाले वर्गों का उपयोग कर सकते हैं। जेसन नेमस्पेस जो .NET 4.5 में जोड़ा गया था।

JsonValue.Parse () विधि JSON पाठ पार्स करता है और एक JsonValue देता है:

 JsonValue value = JsonValue.Parse(@"{ ""name"":""Prince Charming"", ..."); 

यदि आप JSON ऑब्जेक्ट के साथ एक स्ट्रिंग पास करते हैं, तो आप को JsonObject के लिए मूल्य डालने में सक्षम होना चाहिए:

 JsonObject result = value as JsonObject; Console.WriteLine("Name .... {0}", (string)result["name"]); Console.WriteLine("Artist .. {0}", (string)result["artist"]); Console.WriteLine("Genre ... {0}", (string)result["genre"]); Console.WriteLine("Album ... {0}", (string)result["album"]); 

कक्षाएं System.Xml.Linq नामस्थान में पाए जाने वाले समान हैं।

मैं इसका उपयोग करता हूं … लेकिन मैंने कभी भी मेट्रो ऐप विकास नहीं किया है, इसलिए मुझे आपके लिए उपलब्ध पुस्तकालयों पर कोई प्रतिबंध नहीं पता है। (ध्यान दें, आपको अपनी कक्षाओं को डेटा कंट्रेक्ट और डेटामेम्बर विशेषताओं के साथ चिह्नित करना होगा)

 public static class JSONSerializer<TType> where TType : class { /// <summary> /// Serializes an object to JSON /// </summary> public static string Serialize(TType instance) { var serializer = new DataContractJsonSerializer(typeof(TType)); using (var stream = new MemoryStream()) { serializer.WriteObject(stream, instance); return Encoding.Default.GetString(stream.ToArray()); } } /// <summary> /// DeSerializes an object from JSON /// </summary> public static TType DeSerialize(string json) { using (var stream = new MemoryStream(Encoding.Default.GetBytes(json))) { var serializer = new DataContractJsonSerializer(typeof(TType)); return serializer.ReadObject(stream) as TType; } } } 

तो, अगर आप इस तरह एक वर्ग था …

 [DataContract] public class MusicInfo { [DataMember] public string Name { get; set; } [DataMember] public string Artist { get; set; } [DataMember] public string Genre { get; set; } [DataMember] public string Album { get; set; } [DataMember] public string AlbumImage { get; set; } [DataMember] public string Link { get; set; } } 

तो आप इसे इस तरह इस्तेमाल करेंगे …

 var musicInfo = new MusicInfo { Name = "Prince Charming", Artist = "Metallica", Genre = "Rock and Metal", Album = "Reload", AlbumImage = "http://img.hiwab.com/c%23/u2zzzw4mjayz.png", Link = "http://f2h.co.il/7779182246886" }; // This will produce a JSON String var serialized = JSONSerializer<MusicInfo>.Serialize(musicInfo); // This will produce a copy of the instance you created earlier var deserialized = JSONSerializer<MusicInfo>.DeSerialize(serialized); 

क्या आपने JavaScriptSerializer का उपयोग करने की कोशिश की है? वहाँ भी है DataContractJsonSerializer

जिनके पास 4.5 नहीं है, उनके लिए यहां लाइब्रेरी फ़ंक्शन है जो जेसन पढ़ता है। इसे System.Web.Extensions । वेब के लिए प्रोजेक्ट संदर्भ की आवश्यकता है। System.Web.Extensions

 using System.Web.Script.Serialization; public object DeserializeJson<T>(string Json) { JavaScriptSerializer JavaScriptSerializer = new JavaScriptSerializer(); return JavaScriptSerializer.Deserialize<T>(Json); } 

आम तौर पर, जेसन को एक अनुबंध के आधार पर लिखा जाता है। यह अनुबंध और आमतौर पर एक कक्षा ( T ) में संहिताबद्ध हो जाएगा। कभी-कभी आप जेसन से एक शब्द ले सकते हैं और उस प्रकार को खोजने के लिए ऑब्जेक्ट ब्राउज़र को खोज सकते हैं।

उदाहरण उपयोग:

जेएसएन को देखते हुए

 {"logEntries":[],"value":"My Code","text":"My Text","enabled":true,"checkedIndices":[],"checkedItemsTextOverflows":false} 

आप इसे इस तरह एक RadComboBoxClientState ऑब्जेक्ट में पार्स कर सकते हैं:

 string ClientStateJson = Page.Request.Form("ReportGrid1_cboReportType_ClientState"); RadComboBoxClientState RadComboBoxClientState = DeserializeJson<RadComboBoxClientState>(ClientStateJson); return RadComboBoxClientState.Value; 

आप DataContractJsonSerializer उपयोग कर सकते हैं अधिक जानकारी के लिए इस लिंक को देखें।

मैंने Tiferix.Json नामक एक .NET लाइब्रेरी को रिलीज़ किया है जो आपको Json फ़ाइलों को एडीओ.Net DataSet और DataTable ऑब्जेक्ट से serialize और deserialize करने की अनुमति देता है। यह परियोजना प्रगति पर एक काम है और अगले 6 महीनों में (उम्मीद है) मैं गतिशील वर्गों और अनाम प्रकारों सहित विभिन्न प्रकार के नेट वर्गों और ऑब्जेक्ट्स के सीरियलाइजेशन की अनुमति देने के लिए कार्यक्षमता का विस्तार करूँगा। अब तक, Tiferix.Json लायब्रेरी में एक कच्चा जेसनडाटा रीडर नहीं है, लेकिन इसमें काफी शक्तिशाली जेसनडाटा वाइटर क्लास है जो जेएसओन फाइल को एक ही प्रकार के .नेट बाइनरी या स्ट्रीम ड्रायवर में लिख सकता है। Tiferix.Json पुस्तकालय के JsonDataWriter में भी आपकी जेसन फाइलें स्वत: पहचानने की क्षमता है, जो कि एक बहुत ही उपयोगी विशेषता है जिसे मैंने जेएसएनएननेट सहित किसी भी अन्य जेसन लाइब्रेरी में नहीं देखा है।

यदि आप रुचि रखते हैं तो आप मेरे गिथब पेज पर Tiferix.Json प्रोजेक्ट को देख सकते हैं और पुस्तकालयों और डीएलएलएस डाउनलोड कर सकते हैं। Tiferix.Json अधिक व्यापक जेसननेट लाइब्रेरी के लिए एक बहुत सरल, हल्के विकल्प प्रदान करता है और देशी नेटली से भी कम कठोर और आसान (मेरी राय में) का उपयोग करता है।

टीरिफ़िक्स जेसन लाइब्रेरी