我正在从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
上有不同类型的属性,它被反序列化就好了。我想它不会反序列化为对象类型......
答案 0 :(得分:1)
我测试过我的WebRequestObject上有不同类型的属性 并且它被反序列化就好了。我想它不会反序列化 对象类型......
这是因为string
是object
。由于api控制器方法没有具体说明如何将数据转换为CLR对象,并且通过线路发送的原始数据是json字符串,而字符串是对象,它只是保留请求参数的原始形式
换句话说,您始终可以将string
转发为object
。