【发布时间】:2020-03-31 09:39:26
【问题描述】:
我有模型:
public class PushManyRequest
{
[JsonProperty("ids")]
public List<string> Ids { get; set; }
}
对于我的控制器,我有以下签名:
public async Task<IActionResult> PushMany([FromBody] PushManyRequest request)
{
...
}
如您所见,我正在尝试将请求映射到模型。而且方便易懂!
我可以添加[Required(ErrorMessage=<message>)] 属性,如果没有ids,我会给客户我自己的错误
但是如果客户传递给我无效的 JSON 怎么办?例如:
{
"ids": [
"123",
"234"
"235 <---------------------- invalid!!!
]
}
我会为客户回答类似的问题:
{
"status": "error",
"description": [
"Unterminated string. Expected delimiter: \". Path 'ids[991]', line 999, position 1.",
"Unexpected end when deserializing array. Path 'ids[991]', line 999, position 1.",
"Unexpected end when deserializing object. Path 'ids[991]', line 999, position 1."
]
}
如您所见,它非常不友好。这是我的内部解析错误,客户不需要知道它。我想返回类似的东西:
{
"status": "error",
"description": "Sorry, but your JSON is invalid. Please, check it and try again"
}
但我不明白我可以在哪里写它以及如何捕捉这种情况。有任何想法吗?谢谢!
【问题讨论】:
-
您是否查看了有关错误处理的文档? newtonsoft.com/json/help/html/SerializationErrorHandling.htm
标签: c# asp.net-mvc asp.net-web-api json.net