Servicestack不会将我的json字符串反序列化为c#类

时间:2013-07-24 15:11:54

标签: c# json jquery servicestack

我正在向我们的服务器发送跨域jquery ajax请求:

$.ajax({
beforeSend: function (xhr) {
    xhr.withCredentials = true;
},
data: data,
type: "GET",
url: requestUrl,
xhrFields: {
    withCredentials: true
},
async: true,                      
dataType: 'json',
crossDomain: true
}; 

发送的数据对象具有以下格式:

var data = {
    Customer: { id: 1 },
    Order: { id: 1 }
};

使用JSON.stringify(数据)转换数据并将其发送到服务器。

在服务器上我有这个请求对象:

public class RequestObject
{
   public CustomerRef Customer { get; set; }
   public OrderRef Order { get; set; }
}

这两个对象仍然具有id属性。

当我在服务器端调试时,会创建请求对象,但Customer和Order属性都为空。

我正在使用数据对象中的参数请求数据(GET)。

这就是我发送的网址的样子:

http://localhost:82/json/reply/MyService?{%22Customer%22:{%22id%22:1},%22Order%22:{%22id%22:1}}

我错了什么?

1 个答案:

答案 0 :(得分:1)

我遇到了类似的问题,解决方法是将.ajax调用中的contentType属性设置为“application / json”。在我这样做之后,所有序列化都很有效。

这是我的测试代码:

var dataObject = {RequestString: "hello service!", RequestDetails: {ClientName: "val1", ClientGroupID: "val2"}, Arguments: {dict1: {test1: "test1", test2: "test2"}}};

var dataString = JSON.stringify(dataObject);

var request = $.ajax({
url: "http://localhost:1337/testws",
type: "POST",
dataType: "json",
contentType: "application/json",        
data: dataString,
cache: false,
success: function (d) {
    $("#result-div").text(JSON.stringify(d));
},
error: function (jqXHR, textStatus) {
    alert("web call failed! d" + textStatus);
}
});