我从Web API中接收以下JSON,列出了帖子中发现的错误。ModelState
中可能有多个键值对,具体取决于发现了多少个错误。唯一的问题是值周围有方括号。因此,当我与json.net进行验证时,有一个Unexpected token
错误。
我的解决方案现在是进行搜索并替换那些括号,然后对其进行验证,这确实有效。但是有更好的解决方案吗?
我的班级
public class Error
{
public string Message { get; set; }
public Dictionary<string, string> ModelState { get; set; }
}
JSON
{
"Message": "The request is invalid.",
"ModelState": {
"member.Gender": ["An error has occurred."],
"member.MemberID": ["The MemberID field is required."],
"member.BoardMemberID": ["The BoardMemberID field is required."],
}
}
我现在如何进行
Error error = JsonConvert.DeserializeObject<Error>(jsonString.Replace("[", "").Replace("]", ""));
您将希望ModelState成为Dictionary<string, List<string>>
,而不是Dictionary<string, string>
即。
public class Error
{
public string Message { get; set; }
public Dictionary<string, List<string>> ModelState { get; set; }
}
只需将模型更改为以下
public class Error
{
public string Message { get; set; }
public Dictionary<string, string[]> ModelState { get; set; }
}
,避难所将看起来像以下
Error error = JsonConvert.DeserializeObject<Error>(jsonString);
要完成任务,以以下方式修改错误类:
public class Error
{
public string Message { get; set; }
public Dictionary<string, List<string>> ModelState { get; set; }
}