Asp.NetWebApi、REST控制器和字节数组反序列化

本文关键字:字节 字节数 数组 反序列化 控制器 NetWebApi REST Asp | 更新日期: 2023-09-27 18:29:35

我已经实现了这样的控制器:

[HttpPost]
[ActionName("DefaultAction")]
public HttpResponseMessage Post(Person obj){
}

此类人员:

public class Person
{
   public String Name { get; set; }
   public byte[] ImageStream { get; set; }
}

在客户端,我打电话发布新人:

var person={
            "Name":"Test",
            "ImageStream":"AQID"
}
$.ajax({
            type: "POST",
            url: "/person",
            dataType: "json",
            contentType: "application/json",
            data: JSON.stringify(person),
            success: function (result) {
                console.log(result); //log to the console to see whether it worked
            },
            error: function (error) {
                alert("There was an error posting the data to the server: " + error.responseText);
            }
});

问题是,我收到的Person对象的ImageStream设置为null。

为了测试我使用的ImageStream字符串是否正确,我尝试了这个:

Person p=new Person();
p.Name="Test";
p.ImageStream=new byte[]{1,2,3};
String json=JsonConvert.SerializeObject(p);

Asp.NetWebApi、REST控制器和字节数组反序列化

在Javascript代码中,您不是在向C#方法传递字节数组,而是在传递字符串。它们不是一回事。如果要传递一个字节数组,它需要是一个值在0到255之间的实际数字数组。

这样试试:

var person = {
    "Name": "Test",
    "ImageStream": [65,81,73,68]
}