c# - WCF Service Returns Invalid JSON output -


मैंने एक WCF क्लास लाइब्रेरी बनाई है जिसमें SampleJSON (स्ट्रिंग नेम) नामक फ़ंक्शन शामिल है।

ऑपरेशन अनुबंध इस तरह है:

  [ऑपरेशन कॉन्ट्रैक्ट] [वेबइन्वोक (विधि = "प्राप्त", उत्तरस्वरूप = फॉर्मेट = वेबमाज़ प्रारूप। जेसन, यूरीटैप्लेट = "नमूना / {नाम}")] स्ट्रिंग नमूनाजसन (स्ट्रिंग नाम);  

मैं समारोह SampleJSON () से वैध JSON आउटपुट वापस करने का इरादा है और रिटर्न भाग इस तरह से है:

  StringBuilder sb = new StringBuilder (); स्ट्रिंगव्राइट SW = नया स्ट्रिंग वाइटर (एसबी); sw.Write ( "{"); Sw.Write ("\" "+" प्रथमनाम "+" \ "" + ":"); Sw.Write ("\" "" नमूना फर्स्टनाम "+" \ "" + ","); Sw.Write ("\" "+" अंतिम नाम "+" \ "" + ":"); Sw.Write ("\" "samplelastname" + "\" "+"} "); sw.Flush (); sw.Close (); वापसी sb.ToString ();  

और जो आउटपुट मेरी सेवा बनाता है वह ऐसा कुछ है:

  "{\" firtsname \ ": \" samplefirstname \ ", \" अंतिम नाम \ ": \" नमूनानामनाम \ "}"  

जो अप्रतिबंधित अमान्य है।

मैंने भी न्यूटन का उपयोग करने की कोशिश की है। जेसन लेकिन मुझे अभी भी समस्या है।

मुझे लगता है कि मुझे स्ट्रिंग के बदले एक JSONObject वापस करने की आवश्यकता है, लेकिन मुझे नहीं पता कि यह कैसे करना है और न्यूटन के डॉक्स। जेसन ने मेरी मदद नहीं की है। / P>

मैं JSONObject कैसे बना सकता हूं जो आखिरकार एक मान्य JSON आउटपुट बनाता है, अधिमानतः न्यूटन। जेएसएन का उपयोग कर रहा है।


[संपादित करें] यह नया कोड है I ब्राउज़र का उपयोग करके और परिणाम:

  स्ट्रिंगबइल्डर sb = नया स्ट्रिंगबिल्डर (); स्ट्रिंगव्राइट SW = नया स्ट्रिंग वाइटर (एसबी); जेसनटीडवर्टर लेखक = नया जेसनटीक्स्टवर्टर (एसएच); writer.WriteStartObject (); writer.WritePropertyName ( "insertresult"); writer.WriteValue (resultArray [0]); writer.WritePropertyName ( "insertmessage"); writer.WriteValue (resultArray [1]); writer.WritePropertyName ( "sendsmsresult"); writer.WriteValue (resultArray [2]); writer.WritePropertyName ( "sendsmsmessage"); writer.WriteValue (resultArray [3]); writer.WriteEndObject (); writer.Flush (); sw.Flush (); वापसी sb.ToString ();   परिणाम  \ "कोई भी नहीं \": यह जेसन अमान्य है  

यह json एक एंड्रॉइड एप्लिकेशन द्वारा उपयोग किया जा रहा है मेरा सवाल यह है कि: क्या एंड्रॉइड ऐप देखता है कि मैं यहाँ क्या देखता हूं, या यह मान्य प्रारूप देखता है?

यदि आप WCF में जटिल प्रकार वापस करना चाहते हैं और उन्हें JSON पर सही रूप से सीरियल किया जाना है, तो आपको एक को बनाने की आवश्यकता है। डेटा अनुबंध केवल एक वर्ग है जिसमें सीरियल किया जाने वाला डेटा शामिल होता है, जहां वर्ग को [DataContract] विशेषता के साथ चिह्नित किया जाता है और उस वर्ग के प्रत्येक सदस्य को आप सीरियलाइज़ करना चाहते हैं एक [डेटामेम्बर] विशेषता उदाहरण के लिए:

  [DataContract] सार्वजनिक वर्ग का व्यक्ति {[डेटामेम्बर (नाम = "प्रथम नाम")] सार्वजनिक स्ट्रिंग प्रथम नाम {get; सेट; } [डेटामेम्बर (नाम = "अंतिम नाम")] सार्वजनिक स्ट्रिंग LastName {get; सेट; }}  

जगह में डेटा अनुबंध के साथ, एक स्ट्रिंग के बजाय उस वर्ग का एक उदाहरण बनाने और वापस लाने के लिए अपनी सेवा पद्धति बदलें। उदाहरण के लिए:

  व्यक्ति नमूनाजजन (स्ट्रिंग का नाम) {व्यक्ति पृष्ठ = नया व्यक्ति {प्रथम नाम = "नमूना फर्स्टनाम", अंतिमनाम = "नमूनानामनाम"} वापसी पृष्ठ; }  

डब्लूसीएफ स्वचालित रूप से JSON को डेटा के सीरियलाइजेशन को संभाल देगा यदि आप पहले इसे मैन्युअल रूप से सीरियलाइज़ करने का प्रयास करते हैं, तो आपको डबल-सीरियल की गई स्ट्रिंग मिलेगी, जिसमें बैकस्लैश होता है, जैसा कि आपने देखा है।

यदि आपके पास कोई कारण है जो आपको मैन्युअल रूप से सीरियलाइजेशन को संभालना है, तो आप या तो WCF के सीरियललाइज़र के आसपास या बदलने की जगह है प्रारंभ बिंदु के लिए देखें।


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -