2016-04-08 15 views
5

बाद Ui से मेरी Json इनपुट में स्ट्रिंग के रूप में deserialized वस्तु:प्राप्त Json वेब एपीआई नियंत्रक

{ 
    "data": [{ 
     "Id": 1 
    }, { 
     "Id": 2 
    }, { 
     "Id": 3 
    }] 
} 

मैं वस्तु संरचना में किसी समस्या के बिना इसे प्राप्त कर सकते हैं नीचे दिखाया गया है:

public class TestController : ApiController 
    { 
     /// <summary> 
     /// Http Get call to get the Terminal Business Entity Wrapper 
     /// </summary> 
     /// <param name="input"></param> 
     /// <returns></returns> 

     [HttpPost] 
     [Route("api/TestJsonInput")] 
     public string TestJsonInput([FromBody] TestInput input) 
     { 
      return JsonConvert.SerializeObject(input.data); 
     }   

     public class TestInput 
     { 
      public List<Info> data { get; set; } 
     } 

     public class Info 
     { 
      public int Id { get; set; } 
     } 

    } 

हालांकि मेरा उद्देश्य निम्नलिखित एपीआई विधि में प्राप्त करना है:

 [HttpPost] 
     [Route("api/TestJsonInput")] 
     public string TestJsonInput1([FromBody] string input) 
     { 
      return input; 
     } 

इस आवश्यकता का कारण है, मेरे पास है वेब एपीआई के माध्यम से जेसन ऑब्जेक्ट डी-सीरियलाइज्ड का कोई उपयोग नहीं, मुझे बस वास्तविक जेसन को डेटाबेस में जारी रखने और यूआई पर लौटने की आवश्यकता है, जो इसे वापस पार्स करेगा।

जैसा कि मैं सुझाए गए स्ट्रिंग इनपुट में प्राप्त करने में सक्षम नहीं हूं, इसलिए मुझे उद्देश्य प्राप्त करने के लिए जेसन सीरियलाइजेशन, डी-सीरियलाइजेशन का अतिरिक्त कदम उठाना होगा। स्ट्रिंग में प्राप्त करके और सीधे इसका उपयोग करके इस कार्यवाही से बचने के लिए मेरे लिए कोई भी तंत्र। मैं वर्तमान में पोस्टमैन

उत्तर

5

का उपयोग करके परीक्षण कर रहा हूं आप अपनी विधि के पैरामीटर में जो भी डालते हैं उसके बावजूद आप सीधे स्ट्रिंग के रूप में शरीर की सामग्री को पढ़ सकते हैं। आपको वास्तव में पैरामीटर में कुछ भी डालने की ज़रूरत नहीं है और आप अभी भी शरीर को पढ़ सकते हैं।

[HttpPost] 
[Route("api/TestJsonInput")] 
public string TestJsonInput1() 
{ 
    string JsonContent = Request.Content.ReadAsStringAsync().Result; 
    return JsonContent; 
} 

आपको इनपुट को पैरामीटर के रूप में पढ़ने की आवश्यकता नहीं है।

+0

एकाधिक स्ट्रिंग इनपुट होने के बारे में, मुझे लगता है कि यह एक एकल जेसन स्ट्रिंग होगा, जिसे –

+0

पार्स किया जाना चाहिए, इसके अलावा मुझे अब बॉडी में नहीं है, तो मैं पोस्टमैन से इसका परीक्षण कैसे करूं, कहां करता है इनपुट इस मामले में जाता है –

+0

यह वर्तमान संदर्भ में मेरे लिए काम करता है, धन्यवाद kudos :) –

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