【问题标题】:How Do I Accept JSON in Web API 2.0 and Return Same?如何在 Web API 2.0 中接受 JSON 并返回相同的值?
【发布时间】:2014-12-11 12:40:53
【问题描述】:

我不是 VB 开发人员,但我试图帮助同事。

尝试使用 Web API 2.0 和 VB 获取一个简单示例,以接受 JSON POST,并将其返回,映射为自定义对象。

VS 2013 中包含的模板包含一个 POST 示例子例程,但没有返回。我的尝试不会在通过休息客户端(邮递员)发布 JSON 对象时创建值,然后当然返回 null。设置标头接受 Application/JSON 和 RAW JSON HTTP POST。下面是我对包含的示例控制器所做的更改,并添加了类。我的理解是 Web API 应该能够将发布的 JSON 对象映射到自定义类并处理所有序列化。我显然错过了一些东西。

    Public Function PostValue(<FromBody()> ByVal value As Value)
    Return value
    End Function 

注意:值是具有 2 个公共字段的简单类

Public Class Value

Public firstName As String
Public lastName As String

End Class

【问题讨论】:

    标签: json vb.net asp.net-web-api visual-studio-2013


    【解决方案1】:

    当您将 JSON 对象发布到 Web api 时,控制器会自动将键映射到模型属性,并且当您收到 JSON 对象成功时,它将被视为键值对,键作为您的模型属性名称和值是他们所包含的价值吗

    Javascript:

    var data= {
     firstName: $("#Name").val(),
     lastName: $("#lName").val()
     };
    
     //Convert javascript object to JSON object
     var DTO = JSON.stringify(data);
     $.ajax({
     url: 'api/product', //calling Web API controller product
     cache: false,
     type: 'POST',
     contentType: 'application/json; charset=utf-8',
     data: DTO,
     dataType: "json",
     success: function (returnedData) {
     $.each(object, function (key, val) {
       // do anything with your key val pair});
     }
     });
    

    控制器:在控制器中,您会看到在发布时_model 被您通过 json 对象发送的数据填充:即 firstName 和 lastName 属性被填充

    Public function PostData(_model as Value)
            Return Json(_model)
    End Function
    

    【讨论】:

    • 使用 Json(_model) 时,我收到一个异常,说明要检查循环引用。如果我刚刚返回了 _model,它现在似乎可以正确响应了。
    • 是的,这个警告解决了,返回对象与 Json(对象)。谢谢。
    猜你喜欢
    • 2014-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2023-03-26
    • 2015-02-03
    • 2010-09-22
    • 1970-01-01
    相关资源
    最近更新 更多