2017-04-12 72 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响应”,你无能为力。
如果有可能使传入格式正确,那么最好做。