我有一个用例,我使用 jQuery 发布一个带有数组成员的复杂对象。例如:
data: {
obj1: obj1,
arr1: [ ... ]
}
在服务器上,我实现了一个 ServiceStack 服务。服务器上的自动请求映射为请求成员生成空值,但如果我提取 Request.GetRawBody(),然后使用 ServiceStack.Text.JsonSerializer.DeserializeFromString,我得到了我需要的。
调试实际的反序列化并查看缺少的内容会很有用。有人知道怎么做吗?
例子:
传入一个平面对象 定义一个包含几个字段的简单请求对象:
public class Request
{
public string Name { get; set; }
}
进行 jQuery ajax 调用:
$.ajax({
//...
data: {
name: 'John Doe'
}
});
该调用有效,服务器接收具有“John Doe”名称属性的对象。
使用子对象传递对象
public class Request
{
public Caller Caller { get; set; }
}
public class Caller
{
public string Name { get; set; }
}
然后从 jQuery 调用:
$.ajax({
// ...
data: {
caller: {
name: 'John Doe'
}
}
});
调用后,服务上请求的“调用者”属性为“null”,所以这种做法是行不通的。
结论 在我最初的评估中,我指的是对象和数组的组合。我想问题在于获得一个简单的子对象来序列化/反序列化。这是否意味着不支持该概念,或者我是否错误地传递了对象?