JSON

2013-02-14 13 views
16

के रूप में HttpResponseMessage की सामग्री मेरे पास asp.net-mvc web api है। कई कारणों से (कोई प्राधिकरण के कारण पुनर्निर्देशित नहीं है ...) मैं केवल एक साधारण वस्तु का उपयोग नहीं कर सकता और इसे अपने नियंत्रक विधि में वापस कर सकता हूं। इसलिए मुझे HttpResponseMessage क्लास की आवश्यकता है जो मुझे रीडायरेक्ट करने की अनुमति देता है।JSON

वर्तमान में इस

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
var formatter = new JsonMediaTypeFormatter(); 
response.Content = new ObjectContent<Response>(response, formatter, "application/json"); 

वस्तु, json के रूप में धारावाहिक, HttpResponseMessage की सामग्री में प्राप्त करने के लिए कर रही im। किसी भी तरह, मुझे यह महसूस हो रहा है कि ऐसा करने का दूसरा, बेहतर, तरीका है। उस पर कोई विचार?

उत्तर

24

आप क्या कर सकते हैं

var response = new Response { responseCode = Response.ResponseCodes.ItemNotFound }; 
Request.CreateResponse<Response>(HttpStatusCode.OK, response); 

डिफ़ॉल्ट रूप से, वेब एपीआई सामग्री प्रकार HTTP अनुरोध हेडर में निर्दिष्ट स्थान पर आधारित प्रतिक्रिया का प्रारूप तय करेंगे लेकिन वहाँ CreateResponse तरीका है जहाँ आप कर सकते हैं पर कुछ भार के हैं टाइप फॉर्मेटर निर्दिष्ट करें।

आप वेब एपीआई एक्सएमएल सीरिएलाइज़र को सभी प्रतिक्रियाओं को जेएसओएन के रूप में भी मजबूर कर सकते हैं यदि आप जो चाहते हैं - मेरे सिर के ऊपर से मुझे लगता है कि यह एक फॉर्मेटर्स है। HttpCOnfiguration पर रीमूव विधि।

+0

धन्यवाद! ठीक काम करता है! मैं जेसन के लिए सब कुछ serialize करने के लिए मजबूर किया :) – gosua