2017-04-12 40 views
0

deserilizing JSON我得到的JSON響應這樣錯誤,而在C#

data={"Id": "234", "Name": "pinky", "MobileNumber": "", "ClassName": "Class1_Physics", "DOBTime": "1990-04-11 15:46:38", "Landline": "", "Status": "Unmarried"} 

我想deserilize JSON並插入到表中。 我爲它創建了2個類,並使用Newtonsoft的dll進行了deserilization。

public class JsonResult 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public string MobileNumber { get; set; } 
    public string ClassName { get; set; } 
    public string DOBTime { get; set; } 
    public string Landline { get; set; } 
    public string Status { get; set; } 
} 

public class JsonResultRoot 
{ 
    [JsonProperty(PropertyName = "data")] 
    public string Data { get; set; } 

    public JsonResult JsonResult 
    { 
     get { return JsonConvert.DeserializeObject<JsonResult>(Data); } 
    } 
} 

代碼:
decodedUrl:存儲實際JSON數據/串 VAR JsonData = JsonConvert.DeserializeObject(decodedUrl).JsonResult;

回答

0

如果你的JSON包含這個data=部分,那麼它是無效的JSON。您不能使用JSON.NET庫反序列化它。

爲了反序列化這一點,你可以簡單地清理這部分指出:

public class JsonResult 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public string MobileNumber { get; set; } 
    public string ClassName { get; set; } 
    public string DOBTime { get; set; } 
    public string Landline { get; set; } 
    public string Status { get; set; } 
} 

// Usage: 
jsonString = jsonString.Replace("data=").Trim(); 
var jsonObject = JsonConvert.DeserializeObject<JsonResult>(jsonString); 

當然,在一般情況很糟糕。你只應該這樣做,如果「你得到這樣的JSON響應」,你無能爲力。
如果有可能使傳入格式正確,那麼最好做。