Есть способ сделать это .. Контракт операции на самом деле является строкой. Я избегаю строки json, чтобы сохранить ее. Затем я в веб-методе удаляю строку и анализирую ее в словаре, используя NewtonSoftJson. Я использовал Dictionary, но вы также можете сделать Dictionary, если хотите. Надеюсь, это полезно ...
Я использовал библиотеку NewtonSoft Json ...
c # код
using Newtonsoft.Json;
[OperationContract]
[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
public void testMethod(string jsonData)
{
string data = Uri.UnescapeDataString(jsonData);
Dictionary<string, string> x = jsonConvert.DeserializeObject<Dictionary<string, string>>(data);
foreach (KeyValuePair<string, string> kvp in x)
{
}
}
JSCode
var Data = {
width: 400,
height: 200,
someString: "somedata"
};
$.ajax({
type: "POST",
url: "Service1.svc/testMethod",
contentType: "application/json; charset=utf-8",
dataType: "json",
timeout: 1000000,
data: '{"jsonData": "' + escape(JSON.stringify(Data)) + '"}',
error: function(error) {
},
success: function (data) {
},
});