2015-12-01 10 views
5

साथ शब्दकोश में मैं एक वेब api विधि है कि इस तरह दिखता है पोस्ट करनावेबएपीआई json

public string Body { get; set; } 
public string From { get; set; } 
public string Template { get; set; } 
public string To { get; set; }   
public string Type { get; set; } 

और मैं करने के लिए पोस्ट कर रहा हूँ मेरी फिडलर का उपयोग करके पोस्ट विधि, इस तरह:

User-Agent: Fiddler 
Host: localhost:3994 
Content-Length: 215 
Content-Type: application/json; charset=utf-8 
[ 
{"Body":"body","From":"from","To":"to","Template":"template"}, 
{"Body":"body1","From":"from1","To":"to1","Template":"template1"}, 
{"Body":"body2","From":"from2","To":"to2","Template":"template2"} 
] 

यह ठीक काम करता है। हालांकि, मैं अपने ईमेल वर्ग के लिए एक शब्दकोश में जोड़ने के लिए सक्षम होना चाहते हैं, तो यह इस तरह दिखेगा:

public string Body { get; set; } 
public string From { get; set; } 
public string Template { get; set; } 
public string To { get; set; }   
public string Type { get; set; } 
public Dictionary<string, string> HandleBars { get; set; } 

और मैं अपने अनुरोध इस तरह देखने के लिए बदल दिया है:

[{ 
    "Body": "body", 
    "From": "from", 
    "To": "to", 
    "Template": "template", 
    "HandleBars": [{ 
     "something": "value" 
    }] 
}, 
{ 
    "Body": "body1", 
    "From": "from1", 
    "To": "to1", 
    "Template": "template1" 
}, 
{ 
    "Body": "body2", 
    "From": "from2", 
    "To": "to2", 
    "Template": "template2" 
}] 

हालांकि, जब पोस्ट विधि को यह प्राप्त होता है, हैंडलबार्स शब्दकोश को छोड़कर, सभी ईमेल फ़ील्ड पॉप्युलेट किए जाते हैं। इसे सही तरीके से पारित करने के लिए मुझे क्या करना है? क्या मेरा जेसन गलत तरीके से संरचित है?

+1

है यह होना नहीं चाहेंगे (json सरणी के अंदर) चाहिए '{" मूल्य ":" कुछ "" कुंजी ":" key1 "}'? (इस पर निर्भर करता है कि आप अपने जेसन को कैसे आ रहे हैं, यह वैल्यू एन कुंजी हो सकता है) – Igor

+0

'हैंडलबार्स' एक '' है और आप केवल एक 'स्ट्रिंग' पास कर रहे हैं, साथ ही आपको अंदर सामग्री देनी चाहिए 'हैंडलबार्स' नाम 'कुंजी' और 'मान' – ragerory

+0

देखें, यहां पहले से ही एक प्रतिक्रिया है http://stackoverflow.com/questions/2494294/sending-a-json-array-to-be-received-as-a-dictionarystring -स्ट्रिंग – meorfi

उत्तर

6

डिफ़ॉल्ट JsonFormatter जावास्क्रिप्ट Array से Dictionary को बांधने में असमर्थ है क्योंकि यह प्रत्येक आइटम की कुंजी परिभाषित नहीं करता है।

आप के बजाय एक Object उपयोग करने की आवश्यकता:

"HandleBars": { 
    "something": "value" 
} 
+0

यह ऐसा किया। धन्यवाद। – ygetarts

0

आप

{ 
    "Body": "body", 
    "From": "from", 
    "To": "to", 
    "Template": "template", 
    "HandleBars": [ 
     { key: 'key1', value: 'something'} 
    ] 
} 
संबंधित मुद्दे