gpt4 book ai didi

c# - 当参数未反序列化时,有什么方法可以警告或抛出错误吗?

转载 作者:太空宇宙 更新时间:2023-11-03 13:10:38 25 4
gpt4 key购买 nike

这是我上周遇到的一个场景:

我将一组 JSON 对象发送到 WebAPI 方法,其签名如下:

void Post(IEnumerable<ItemViewModel> items)

JSON 数组的示例可能如下所示(为简洁起见,我删除了大部分属性):

[{ size: 1 }, 
{ size: 1.5 },
{ size: 2 },
{ size: 3 },
{ size: 1.25 }]

View 模型类似于以下内容(为简洁起见删除了大部分属性):

public class ItemViewModel
{
public int Size { get; set; }
}

问题是 ItemViewModel 的 Size 属性是“int”类型,而一些 JSON 对象的大小属性是“double”类型。

WebAPI 没有将这些对象视为与 ItemViewModel 类型匹配的对象,但它默默地失败了,并且仍然反序列化集合中的其他对象,只是忽略那些不完全匹配的对象。

是否有任何设置/配置点或其他方式让 WebAPI 在发生这种情况时抛出异常或记录警告?

最佳答案

有几种方法可以做到这一点。

首先,最简单的方法是使用 [Required] 属性装饰您的模型,然后调用 ModelState.IsValid。如果某些内容没有正确反序列化,它会告诉您。

如果你不喜欢疯狂地用属性装饰你所有的类(我讨厌它),我听说过关于 Fluent Validation 的好消息。 .

你也可以 validate against a JSON schema .

关于c# - 当参数未反序列化时,有什么方法可以警告或抛出错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28883405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com