我从Web API收到以下JSON,其中列出了在POST中发现的错误。 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("]", ""));
答案 0 :(得分:3)
您希望ModelState为Dictionary<string, List<string>>
而不是Dictionary<string, string>
即
public class Error
{
public string Message { get; set; }
public Dictionary<string, List<string>> ModelState { get; set; }
}
答案 1 :(得分:3)
只需将您的模型更改为以下
public class Error
{
public string Message { get; set; }
public Dictionary<string, string[]> ModelState { get; set; }
}
,反序列化将如下所示
Error error = JsonConvert.DeserializeObject<Error>(jsonString);
答案 2 :(得分:2)
要完成任务,请按以下方式修改Error类:
public class Error
{
public string Message { get; set; }
public Dictionary<string, List<string>> ModelState { get; set; }
}