2013-04-17 9 views
6

मैं एक सी # .net विधि है JsonConvert.SerializeObject का उपयोग कर मैं एक स्ट्रिंग हो रही द्वारा नीचेJson वस्तु

public string jsonTest() 
     { 
      List<string> list = new List<string>(); 
      list.Add("aa"); 
      list.Add("bb"); 
      list.Add("cc"); 
      string output = JsonConvert.SerializeObject(list); 
      return output;   
     } 
यहाँ

eventhough इम एक JSON ऑब्जेक्ट बनाने दिए गए के रूप में (के बाद से वापसी प्रकार स्ट्रिंग है) ।

क्या मैं एमवीसी में क्या कर सकता हूं जैसे रिटर्न टाइप जेसनआरसल्ट (या ऐसा कुछ) का उपयोग करके नीचे की तरह कर सकता हूं?

return Json(new { data = list }, JsonRequestBehavior.AllowGet); 

क्या एएसपीनेट में जेसन डेटा बनाना संभव है?

क्लाइंट साइड में मैं jsonTest() से डेटा प्राप्त करने के लिए एक AJAX कॉल का उपयोग कर रहा हूं।

$.ajax({ 
       type: 'GET', 
       url: "test.aspx", //In test.aspx pageload calling jsonTest() 
       dataType: 'json', 
       success: function (data) { 
        alert(data); 
       }, 
       error: function (data) { 
        alert("In error"); 
       } 

      }); 

जब मैं डेटाप्रकार रहा हूं: 'json', यह हिस्सा त्रुटि के लिए जाना होगा (के बाद से ajax json डेटा की उम्मीद है, लेकिन यह स्ट्रिंग हो जाता है)। Thats क्यों मैं सर्वर पक्ष में एक जेसन ऑब्जेक्ट के रूप में इसे पार्स करना चाहता हूँ।

+0

आप यह है कि सर्वर साइड खपत या क्लाइंट साइड के लिए की तरह करना चाहते हैं? परिणाम के साथ आप क्या करने/करने की कोशिश कर रहे हैं? –

+0

यदि आप एएसपी वेबमाइथ बनाने में सक्षम बात कर रहे हैं तो आप स्ट्रिंग के प्रकार को वापस कर सकते हैं और ऑब्जेक्ट – cgatian

+0

को बदलने के लिए जेसन सीरियलाइज़र का उपयोग करें http://stackoverflow.com/questions/2361380/how-do-i-server-ajax-calls-using -जसन-साथ-वेब-फॉर्म –

उत्तर

-3

जेसन सिर्फ स्ट्रिंग डेटा है। इस तरह स्ट्रिंग का अर्थ है। तो तथ्य यह है कि यह एक स्ट्रिंग लौट रहा है सही है। आपने एएसपी.Net का उल्लेख किया है। क्या आप एएसपी.Net वेबफॉर्म का उपयोग कर रहे हैं और जेएसओएन को सामने की ओर लौटने का तरीका ढूंढ रहे हैं?

+0

मुझे लगता है कि आप एक टिप्पणी कहने के लिए कहते हैं – cgatian

+0

डाउनवोट क्यों? – uriDium

0

कोई JSON ऑब्जेक्ट नहीं कहा जाता है। SerializeObject विधि एक स्ट्रिंग देता है क्योंकि JSON एक स्ट्रिंग मान से अधिक कुछ नहीं है जो विशिष्ट नियमों का पालन करता है।

तुम सब करने की जरूरत है ब्राउज़र को JSON वापस जाने के लिए है: ASP.NET,

string output = JsonConvert.SerializeObject(list); 
Response.Clear(); 
Response.ContentType = "application/json; charset=utf-8"; 
Response.Write(output); 
Response.End(); 
1

यदि आप एक WebMethod बनाने के लिए कोशिश कर रहे हैं ग्रहण करने के लिए एक जावास्क्रिप्ट एक्सएचआर कॉल या समान द्वारा खपत के लिए:

एएसपी.नेट केवल POST अनुरोधों के लिए जेएसओएन को स्वत: क्रमबद्ध करेगा (एएसएमएक्स या तथाकथित "पेज विधि" का उपयोग करके)। डब्ल्यूसीएफ और वेबएपीआई को POST विधि की आवश्यकता नहीं है, लेकिन कुछ कॉन्फ़िगरेशन की आवश्यकता है।

[WebMethod] 
public static List<Task> TasksGet(string projectId) { 
    return MyNamespace.Tasks.GetForProject(projectId); 
} 

परिणाम आपके जे एस कॉल देखता है की तरह कुछ होगा:

{"d": [{ 
    "__type": "MyNamespace.Task", 
    "id": 1, 
    "description": "This is my first task" 
    }, { 
    "__type": "MyNamespace.Task", 
    "id": 2, 
    "description": "This is my second task" 
    }, { 
    ....etc etc 
    } 
]} 

डब्ल्यू/सीधे JsonSerializer वर्ग के आसपास गंदगी के लिए कोई ज़रूरत नहीं।

भी सुनिश्चित करें कि आपके अनुरोध हेडर सही ढंग से स्थापित कर रहे हैं:

Content-Accept: application/json;charset=UTF8

+0

अगर मैं डेटा का उपयोग नहीं कर रहा हूं तो यह ठीक काम कर रहा है टाइप: 'json' AJAX में। अन्यथा इसकी चेतावनी चेतावनी ("त्रुटि में"); – Sudha

0

मैं जा रहा हूँ

Response.ContentType = "application/json; charset=utf-8"; 
Response.Write(jsonTest()); 
Response.End(); 
संबंधित मुद्दे