C# 如何将任意json对象发布到webapi
如何将json对象传递给webapi控制器(POST),而不将其映射到类,而是将其作为任意内容处理 因此,如果我从我的客户处这样传入:C# 如何将任意json对象发布到webapi,c#,json,mongodb,asp.net-web-api,C#,Json,Mongodb,Asp.net Web Api,如何将json对象传递给webapi控制器(POST),而不将其映射到类,而是将其作为任意内容处理 因此,如果我从我的客户处这样传入: createRecord: function (model, data, callback, callbackParams) { var request = jQuery.ajax({ type: "POST", // default = GET, url: '/api/' + mo
createRecord: function (model, data, callback, callbackParams) {
var request = jQuery.ajax({
type: "POST", // default = GET,
url: '/api/' + model + '/',
data: data,
contentType: 'application/json',
success: function (msg) {
$('#results').text(msg);
if (callback) // only fire a callback if it has been specified
callback(msg, callbackParams);
},
error: function (jqXHR, textStatus) {
alert('Request failed: ' + textStatus);
}
});
}
数据是这样的:
{ "_id" : ObjectId("5069f825cd4c1d590cddf206"), "firstName" : "John", "lastName" : "Smith", "city" : "Vancouver", "country" : "Canada" }
我的控制器能解析它吗?下次数据可能与该签名不匹配(例如:
在我的控制器中,我尝试过:
public HttpResponseMessage Post([FromBody]JObject value)
以及:
并且(因为这实际上是与mongo db一起工作的):
但是,对象映射器似乎希望映射到字符串以外的其他对象…您可以使用post方法,该方法接收HttpRequestMessage以旁路传递模型绑定逻辑,并且您可以直接读取请求的内容:
public HttpResponseMessage Post(HttpRequestMessage req)
{
var data = req.Content.ReadAsStringAsync().Result; // using .Result here for simplicity...
...
}
顺便说一句,在JObject中采取的操作之所以不起作用,是因为在数据中用作“\u id”值的“ObjectId”(“…”)。在您的输入中,
“\u id”:ObjectId(“5069f825cd4c1d590cddf206”)
破坏了服务器上的JSON物化。删除ObjectId
并使用“\u id”:“5069f825cd4c1d590cddf206”
适用于JObject
以及Dictionary
我们通过jquery传递json对象,并在动态对象中解析它。它工作正常。这是示例代码:
ajaxPost:
...
Content-Type: application/json,
data: {
"name": "Jack",
"age": "12"
}
...
webapi:
[HttpPost]
public string DoJson2(dynamic data)
{
string name = data.name;
int age = data.age;
return name;
}
关于stackoverflow的类似问题:
这很简单,您只需将Accept头放在“application/json”中即可。感谢您的帮助-此响应和kxb的响应都很有用-将答案授予第一响应者
public HttpResponseMessage Post(HttpRequestMessage req)
{
var data = req.Content.ReadAsStringAsync().Result; // using .Result here for simplicity...
...
}
ajaxPost:
...
Content-Type: application/json,
data: {
"name": "Jack",
"age": "12"
}
...
[HttpPost]
public string DoJson2(dynamic data)
{
string name = data.name;
int age = data.age;
return name;
}