Web API是否自动将Object或Object类型的任何属性转换为JSON?

时间:2013-12-04 17:51:09

标签: c# asp.net json asp.net-mvc-4 asp.net-web-api

我正在从Web API客户端发出请求,传递一个具有object类型的单个属性的对象。该类被称为WebRequestObject所以在我的前端控制器中,我创建了一个WebRequestObject的新实例,并将它传递给我想要的任何类型的对象。对于此示例,我将使用MyClass

因此...

var reqObj = new WebRequestObject(new MyClass());

然后

myWebApiClient.PostAsJsonAsync('someUrl', reqObj);

现在在我的Web API控制器方法中,我得到了WebRequestObject参数并且数据是正确的,但由于某种原因,它不是一个对象而是转换为JSON字符串?

这是默认行为吗?如果有的话,是否有人建议如何停止此或解决方法?

编辑1:更多信息,PostAsJsonAsync将接口作为第二个参数,我的所有模型都实现了这个接口。

编辑2:我意识到文档会这样说:将POST请求作为异步操作发送,并将指定值序列化为JSON。据说我测试了WebRequestObject上有不同类型的属性,它被反序列化就好了。我想它不会反序列化为对象类型......

1 个答案:

答案 0 :(得分:1)

  

我测试过我的WebRequestObject上有不同类型的属性   并且它被反序列化就好了。我想它不会反序列化   对象类型......

这是因为string object。由于api控制器方法没有具体说明如何将数据转换为CLR对象,并且通过线路发送的原始数据是json字符串,而字符串是对象,它只是保留请求参数的原始形式

换句话说,您始终可以将string转发为object