2009-06-08 10 views
7

मैं डब्ल्यूसीएफ में एक वेब सेवा बना रहा हूं जो जेएसओएन लौटाता है, लेकिन डेटाकंट्रैक्टजसनसेरियलाइज़र कुछ परिपत्र संदर्भों पर झुका रहा है (जिसे मैं इस विशेष मामले में नहीं हटा सकता)।डब्ल्यूसीएफ कस्टम सीरियलाइज़र

इसके बजाय, मैं न्यूटॉन्सॉफ्ट जेसन लाइब्रेरी का उपयोग करना चाहता हूं। डब्ल्यूसीएफ में कस्टम सीरिएलाइज़र बनाने का सबसे आसान तरीका क्या है?

नोट: मुझे पता है कि मैं सिर्फ एक स्ट्रीम वापस कर सकता हूं, लेकिन मैं ऑपरेशन कोड को धारावाहिक सामग्री के बारे में नहीं जानता।

उत्तर

4

पुन शुद्ध WCF: यदि आप (पर "पूर्ण" नेट) तार के दोनों सिरों पर नियंत्रण है, तो एक कस्टम serializer आवेदन कर रहा है अपेक्षाकृत सरल है - आप एक व्यवहार DataContractSerializerOperationBehavior से विरासत में मिली जोड़ने के लिए, और CreateSerializer ओवरराइड - here देखना (विशेषता here के साथ)।

हालांकि! मेरा समझ (अनचाहे) यह है कि एक JSON- सक्षम डब्ल्यूसीएफ सेवा इस मार्ग का उपयोग नहीं करेगी, लेकिन सीधे अपने स्वयं के धारावाहिक को लागू करेगी।

+0

यह लगभग काम करता है की बहुत कुछ को सजाने के लिए नहीं करना चाहते हैं, लेकिन मेरे जेसन एक एक्सएमएल रूट नोड में लपेटा जा रहा है, जैसे: {"आईडी": 0, "IsFinalized": झूठी, "IsTemplate": false} rogueg

+0

लिंक टूटा हुआ प्रतीत होता है। – Adrian773

1

बहुत अच्छा लेख: XmlSerializer vs DataContractSerializer: Serialization in Wcf। वहां डैन रिग्सबी विभिन्न परिदृश्य दिखा रहा है और अपने स्वयं के धारावाहिक को अधिक विस्तार से कैसे बना सकता है। सच करने के लिए DataContract के

+0

लिंक टूटा हुआ है। –

2

सेट IsReference विशेषता है, यह नेट 3.5SP1

[DataContract(IsReference = true)] 
public class Employee 

के लिए अधिक विवरण देखने के साथ उपलब्ध है। MSDN DataContractAttribute.IsReference

+0

टूटी हुई लिंक के लिए वोट –

+2

टूटा लिंक निश्चित – Morbia

0

आप कर सकते हैं यहाँ उल्लेख किया ScriptIgnore विशेषता का उपयोग करता: - Ignoring a field during .NET JSON serialization; similar to [XmlIgnore]? हालांकि मैं आगे देख रहा हूँ कुछ को लागू करने की तरह आप चाहते हैं, नेस्टेड वस्तुओं

संबंधित मुद्दे