在字符串值周围具有方括号的json进行审理



我从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; }
}

最新更新