Web API Json反序列化

本文关键字:反序列化 Json API Web | 更新日期: 2023-09-27 18:02:08

我正在使用Web Api。

我有一个a类型的对象。当我返回a类型的列表给我的客户端,然后使用Post方法传递a类型的列表,JSON序列化和反序列化是自动完成的。

因为我想使用POST方法传递多个参数,所以我创建了一个包装器对象,该对象具有我想要传递的每个参数的属性。JSON ser/DeSer负责这个包装器对象,但是我如何在包装器对象中反序列化表示类型A列表的JSON ?

谢谢。

添加代码:

public class ConfigurationUpdateMessage
{
    public string IpAddress { get; set; }
    public List<object> Configurations { get; set; }
}

方法

  public string PutUpdateConfigurations(ConfigurationUpdateMessage configMessage)   
    {}
客户机代码

$scope.UpdateConfigs = function () {
                $.ajax({
                    url: 'api/configurations',
                    dataType: "json",
                    type: "PUT",
                    contentType: 'application/json; charset=utf-8',
                    data: JSON.stringify({ IpAddress: "127.0.0.1", Configurations: $scope.configs }),
                    async: true,
                    processData: false,
                    cache: false,
                    success: function (data) {
                    },
                    error: function (xhr) {
                    }
                });
            };

Web API Json反序列化

PRE:你能贴一些代码吗?

如果包装器对象包含与序列化对象类型匹配的属性,模型绑定器应该自动将它们反序列化为匹配的属性。除非JSON的结构有问题

您应该在服务器端创建相同的包装器类型。

例如:

public class OperationDTO
{
     public string Parameter1 { get; set; }
     public int Parameter2 { get; set; }
     public IEnumerable<A> MyList { get; set; } //List<A> will also work too
}

你的Web Api动作应该是这样的:

[HttpPost]
public IHttpActionResult Operation([FromBody] OperationDTO)
{
    //...
}