c# - 如何将任意 json 对象发布到 webapi

标签 c# json mongodb asp.net-web-api

我如何/是否可以将 json 对象传递给 webapi Controller (POST) 并且 没有 有一个类可以将其映射到,而是将其作为任意内容处理? p>

所以如果我像这样从我的客户那里传递过来:

        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" }

我的 Controller 能够解析它吗?并且下次数据可能与该签名不匹配(例如:

{ "_id" : ObjectId("5069f825cd4c1d56677xz6"), "company" : "Acme" }

在我的 Controller 中,我尝试过:

public HttpResponseMessage Post([FromBody]JObject value)

和:

public HttpResponseMessage Post([FromBody]string value)

并且(因为这实际上是使用 mongo db):

public HttpResponseMessage Post([FromBody]BsonDocument value)

但看起来对象映射器想要映射到字符串以外的东西......

最佳答案

你可以让你的 post 方法接受一个 HttpRequestMessage 来绕过模型绑定(bind)逻辑,你可以直接读取请求的内容:

    public HttpResponseMessage Post(HttpRequestMessage req)
    {
        var data = req.Content.ReadAsStringAsync().Result; // using .Result here for simplicity...
        ...

    }

顺便说一句,JObject 中的操作不起作用的原因是因为 'ObjectId("...")' 在您的数据中用作“_id”的值...

关于c# - 如何将任意 json 对象发布到 webapi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13573384/

相关文章:

c# - .net 中的 jquery+jstree - web 服务响应格式?

mongodb - Prisma-docker 无法连接到服务器

node.js - 同时 Mongo 插入是否有限制

mongodb - 找不到合适的服务器 (`serverSelectionTryOnce` set) : [TLS handshake failed: error:14090086:SSL routines:ssl3_get_server_certificate

c# - 读取多个非常大的文件的最佳方式

c# - 使用变量访问 WPF 元素

javascript - 将 List 对象从 javascript 转换为 JSON

javascript - 以 Angular 动态计算总值(value)

c# - 我可以在 Quartz.NET 中自己持久化触发器吗?

javascript - JavaScript 中的逻辑运算符 && 及其等效于 C#