2013-02-02 32 views
5

मैंने एक webservice लिखा है जो एक टीपी-ओपन सेवा के एक्सएमएल प्रतिक्रिया को जेएसओएन प्रारूप में परिवर्तित करता है। मैं डब्ल्यूसीएफ के लिए नया हूं और वेबसाइट सेवा लिख ​​रहा हूं। लेकिन परिवर्तित जेएसओएन प्रारूप का पालन करने के रूप में प्रदर्शित करता है।सी # में JSON प्रतिक्रिया से बैक स्लेश को कैसे निकालें?

"{ \"data\": { \"current_condition\": [ {\"cloudcover\": \"25\", \"humidity\": \"48\", \"observation_time.. 

इन बैक स्लैश \ और मेरे कोड को अभी तक कैसे निकालें।

public string checkweather(string q, string num_of_day) 
    { 
     HttpWebRequest request=..; 
       ... 
     string Url = string.Format("http://free.worldweatheronline.com/feed/weather.ashx?q={0}&format={1}&num_of_days={2}&key={3}", q, format, num_of_days, key); 
     HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(Url); 
     Request.Method = "GET"; 

     using (HttpWebResponse response = (HttpWebResponse)Request.GetResponse()) 
     { 
      using (Stream stream = response.GetResponseStream()) 
      { 

       using (StreamReader reader = new StreamReader(stream)) 
       { 
        var result2=reader.ReadToEnd(); 
     }}} 
      return result2; 
     } 

कृपया मुझे सूचित करें कि आपको अधिक जानकारी चाहिए या नहीं।

+0

स्ट्रिंग की बात कर रहे result2 है की जगह कृपया शामिल? मैं वापसी परिणाम अनुमान लगा रहा हूँ 2। जगह (@ "\", ""); –

+2

क्या यह सिर्फ डीबगिंग से कॉपी/पेस्ट किया गया है? क्योंकि ऐसा लगता है कि बैकस्लैश सिर्फ – mihail

+0

@ofstream के पात्रों से बच रहे हैं, मैंने कोशिश की लेकिन परिणाम में कोई बदलाव नहीं आया। – Thiri

उत्तर

3

मुझे लगता है कि आपका JSON ठीक है, बैकस्लाश उद्धरणों से बच रहे हैं, जो लोगों ने कहा है। निम्नलिखित कोड कुछ मान्य XML दिखाता है - > Json परिवर्तित। (Json.NET का उपयोग करना)

const string xml = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>"; 
XmlDocument node = new XmlDocument(); 
node.LoadXml(xml); 

string json = JsonConvert.SerializeXmlNode(node); 

आप डिबग मोड में देखने हैं, तो आप बैकस्लैश देखेंगे, लेकिन उत्पादन वैध है Json।

आउटपुट

{"note":{"to":"Tove","from":"Jani","heading":"Reminder","body":"Don't forget me this weekend!"}} 
+0

नमूना उदाहरण के लिए धन्यवाद। मैंने वापसी प्रकार को स्ट्रीम में बदल दिया। अब यह काम कर रहा है। – Thiri

+0

@ थिरी मुझे पता है यह एक पुराना सवाल है लेकिन मुझे एक ही समस्या है। "रिटर्न टाइप को स्ट्रीम में बदलकर" क्या मतलब है? – craftworkgames

3

क्या आप वाकई अपनी स्ट्रिंग में बैकस्लैश हैं? ऐसा लगता है कि वे बचने वाले पात्र हैं क्योंकि "आपकी स्ट्रिंग में वर्ण हैं।

+0

हाँ। क्या इन बैकस्लैश को हटाने के लिए वैसे भी है JSON प्रारूप में कनवर्ट करना? – Thiri

+2

यदि वे केवल बचने वाले चरित्र हैं तो वे वास्तव में स्ट्रिंग में नहीं हैं। यह स्ट्रिंग में विशेष वर्णों को एम्बेड करने का सी # तरीका है। \ n का मतलब है एक नई लाइन। आप File.WriteAllText() का उपयोग कर सकते हैं। डिस्क पर स्ट्रिंग लिखने और नोटपैड के साथ देखने के लिए वास्तव में क्या है। – Maurice

+0

बहुत बहुत धन्यवाद .. यह समझ में आता है। – Thiri

0
str = JToken.Parse(your string).ToString(); 
+0

कृपया अपने उत्तरों पर टिप्पणी करें, या उन्हें हटाने के लिए अनुशंसा की जाने की संभावना है। –

+0

यह मेरे लिए काम किया। –

0

बाकी सेवा समय: System.Net.WebUtility.HtmlEncode (JsonString);

प्रतिक्रिया समय: System.Net.WebUtility.HtmlDecode (JsonString);

अगर आपके डीकोड कोड इस स्ट्रिंग \\" तो \\\ को