JsonConverter 不适用于模型绑定
JsonConverter does not work on model binding
我得到了以下模型
public class SignDocumentsModel
{
[JsonProperty(ItemConverterType = typeof(BinaryConverter))]
public byte[][] Documents { get; set; }
public bool Detached { get; set; }
}
和控制器代码
[HttpPost]
[Route("{requestId}/sign")]
public Task<IHttpActionResult> SignDocuments([FromUri] Guid requestId, SignDocumentsModel parameters)
{
return SomeKindOfProcessing(requestGuid, parameters);
}
现在,当我使用 Postman 执行请求时
POST
Content-Type: application/json
{
"Detached": "true",
"Documents": [
"bG9weXN5c3RlbQ=="
]
}
我想文档 属性 应该填充从请求内容中发布的 Base64 字符串解码的字节数组,尽管实际上 属性 是空的(如果它在模型中的类型是 List<byte[]>
或 byte[][]
,null
如果 IEnumerable<byte[]>
)。
为什么 JsonConverter 在模型绑定期间没有在请求正文反序列化时被调用?如何解决?
您是否尝试删除 [JsonProperty(ItemConverterType = typeof(BinaryConverter))]
?
在我的测试设置中,模型在我删除该属性后成功绑定。
编辑:更多信息...
根据 Json.NET Serialization Guide, a byte[]
will serialize to a base64 string by default. Judging by the source code,看起来 BinaryConverter
应该与 System.Data.Linq.Binary
或 System.Data.SqlTypes.SqlBinary
一起使用,而不是 byte[]
。
我得到了以下模型
public class SignDocumentsModel
{
[JsonProperty(ItemConverterType = typeof(BinaryConverter))]
public byte[][] Documents { get; set; }
public bool Detached { get; set; }
}
和控制器代码
[HttpPost]
[Route("{requestId}/sign")]
public Task<IHttpActionResult> SignDocuments([FromUri] Guid requestId, SignDocumentsModel parameters)
{
return SomeKindOfProcessing(requestGuid, parameters);
}
现在,当我使用 Postman 执行请求时
POST
Content-Type: application/json
{
"Detached": "true",
"Documents": [
"bG9weXN5c3RlbQ=="
]
}
我想文档 属性 应该填充从请求内容中发布的 Base64 字符串解码的字节数组,尽管实际上 属性 是空的(如果它在模型中的类型是 List<byte[]>
或 byte[][]
,null
如果 IEnumerable<byte[]>
)。
为什么 JsonConverter 在模型绑定期间没有在请求正文反序列化时被调用?如何解决?
您是否尝试删除 [JsonProperty(ItemConverterType = typeof(BinaryConverter))]
?
在我的测试设置中,模型在我删除该属性后成功绑定。
编辑:更多信息...
根据 Json.NET Serialization Guide, a byte[]
will serialize to a base64 string by default. Judging by the source code,看起来 BinaryConverter
应该与 System.Data.Linq.Binary
或 System.Data.SqlTypes.SqlBinary
一起使用,而不是 byte[]
。