नेट पहले से ही System.Runtime.Serialization.Json namespace के माध्यम से बुनियादी Json क्रमबद्धता और संस्करण 3.5 के बाद से DataContractJsonSerializer वर्ग का समर्थन करता है। जैसा कि नाम का तात्पर्य है, DataContractJsonSerializer अंतिम जेसन आउटपुट बनाने के लिए आपके ऑब्जेक्ट्स में जोड़े गए किसी भी डेटा एनोटेशन को ध्यान में रखता है।
यह आसान हो सकता है यदि आपके पास पहले से ही एनोटेटेड डेटा कक्षाएं हैं जिन्हें आप एक स्ट्रीम में जेसन को क्रमबद्ध करना चाहते हैं, जैसा कि How To: Serialize and Deserialize JSON Data में वर्णित है। सीमाएं हैं लेकिन यदि आपके पास बुनियादी जरूरत है और आप अपनी परियोजना में एक और लाइब्रेरी नहीं जोड़ना चाहते हैं तो यह काफी अच्छा और तेज़ है।
निम्नलिखित कोड serializea कंसोल आउटपुट स्ट्रीम में एक सूची है। जैसा कि आप देखते हैं कि यह बिट जेसन की तुलना में अधिक वर्बोज़ है।नेट और नहीं टाइप-सुरक्षित (यानी कोई जेनरिक)
var list = new List<string> {"a", "b", "c", "d"};
using(var output = Console.OpenStandardOutput())
{
var writer = new DataContractJsonSerializer(typeof (List<string>));
writer.WriteObject(output,list);
}
दूसरी ओर, Json.NET कैसे आप Json उत्पन्न पर ज्यादा बेहतर नियंत्रण प्रदान करता है। यह बहुत आसान आप जावास्क्रिप्ट के अनुकूल नामों कक्षाएं नेट पर मैप करने के लिए है जब में आ जाएगा, प्रारूप JSON के लिए आदि
एक अन्य विकल्प ServiceStack.Text, ServicStack का हिस्सा ... ढेर, जिनमें से एक सेट प्रदान करता है तारीखें जेसन, जेएसवी और सीएसवी के लिए बहुत तेजी से धारावाहिक।
स्रोत
2012-02-02 11:12:21
आह ठीक है, यह ऑब्जेक्ट्स की सूचियों को क्रमबद्ध करता है और न केवल ऑब्जेक्ट्स। धन्यवाद। – frenchie
चक्रीय संबंधों को पसंद नहीं करता है लेकिन यह कोई समस्या नहीं है – Jodrell
ध्यान दें कि यह नामस्थान सिस्टम.Web.Extensions में चालाकी से दूर हो गया है। एक बार जब आप एक संदर्भ के रूप में जोड़ते हैं, तो समाधान शानदार ढंग से काम करता है! –