Web API Json Deserialise

时间:2015-07-10 11:35:15

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

我正在使用Web Api。

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

因为我想使用我的POST方法传递多个参数,所以我创建了一个包装器对象,其中包含我想要传入的每个参数的属性。对于这个包装器对象,JSON ser / DeSer需要处理,但是如何做我反序列化了在包装器对象中表示我的Type A列表的JSON?

感谢。

添加了代码:

public class ConfigurationUpdateMessage
{
    public string IpAddress { get; set; }

    public List<object> Configurations { get; set; }
}

Post方法

  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) {

                    }
                });

            };

2 个答案:

答案 0 :(得分:0)

PRE:你能发一些代码吗?

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

答案 1 :(得分:0)

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

例如:

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)
{
    //...
}