2017-02-21 46 views
1

我從Web API收到以下JSON,其中列出了在POST中找到的錯誤。 ModelState中可以有多個鍵值對,具體取決於發現的錯誤數量。唯一的問題是值周圍有方括號。所以當我用JSON.net反序列化時,有一個Unexpected token錯誤。反序列化帶方括號的字符串值的JSON

我現在的解決方案是做一個搜索和替換那些括號,然後反序列化,這是行不通的。但有沒有更好的解決方案?

我班

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

[詳細信息](http://stackoverflow.com/questions/36688321/what-is-the-purose-of-using-square-brackets-in-json) – stuartd

回答

3

你會想型號國家要代替Dictionary<string, List<string>>Dictionary<string, string>

public class Error 
{ 
    public string Message { get; set; } 
    public Dictionary<string, List<string>> ModelState { get; set; } 
} 
+0

接受你的答案是正確的,因爲所有的人幾乎都是相同的,但是你是第一個。 – VDWWD

2

爲了完成你的任務,修改以下方式Error類:

public class Error 
{ 
    public string Message { get; set; } 
    public Dictionary<string, List<string>> ModelState { get; set; } 
} 
3

只是改變你的模型如下

public class Error 
    { 
     public string Message { get; set; } 
     public Dictionary<string, string[]> ModelState { get; set; } 
    } 

and the deserialization will l OOK像下面

Error error = JsonConvert.DeserializeObject<Error>(jsonString);