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

C# Web API是否自动将Object或Object类型的任何属性转换为JSON?,c#,asp.net,json,asp.net-mvc-4,asp.net-web-api,C#,Asp.net,Json,Asp.net Mvc 4,Asp.net Web Api,我正在从一个Web API客户端发出一个请求,传递一个对象,该对象具有一个类型为object的属性。该类被称为WebRequestObject,因此在我的前端控制器中,我创建了WebRequestObject的一个新实例,并将我想要的任何类型的对象传递给它。对于这个例子,我将使用MyClass 所以 然后 现在,在我的Web API控制器方法中,我得到了WebRequestObject参数,数据是正确的,但由于某种原因,它不是一个对象,而是转换成JSON字符串 这是默认行为吗?如果有的话,有没有

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

所以

然后

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

这是默认行为吗?如果有的话,有没有人对如何阻止这种情况或解决办法提出建议

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

编辑2:我知道文档是这样说的:将POST请求作为异步操作发送,并将指定值序列化为JSON。也就是说,我已经在我的
WebRequestObject
上测试了不同类型的属性,它得到了反序列化。我猜它不会反序列化到对象的类型

我已经在WebRequestObject上测试了不同类型的属性 它被反序列化得很好。我想它不会反序列化为 对象的类型

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


换句话说,您始终可以将
字符串
向上投射到
对象

我理解发生了什么,但我想知道为什么它不继续将其更改回具有属性的通用对象,而是将其保留为字符串。这基本上只是为我自己反序列化json增加了一个额外的步骤,因为
对象
没有任何属性。如果您想要类型上的属性,那么您需要更像
动态的
。如果您使用的是JSON.NET,那么您可以使用一个类似的代码对其进行反序列化:
JsonConvert.DeserializeObject(jsonString)
Yep这就是我要做的。谢谢你的帮助。
var reqObj = new WebRequestObject(new MyClass());
myWebApiClient.PostAsJsonAsync('someUrl', reqObj);