在C#中对json进行deserilizing时出错

时间:2017-04-12 07:23:22

标签: asp.net json

我正在像json那样得到回应

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

我想将json deserilize并插入表中。 我为它创建了2个类,并使用了牛顿软件的dll进行去除。

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); }
    }
}

代码:
decodingUrl:存储实际的json数据/字符串     var JsonData = JsonConvert.DeserializeObject(decodingUrl).JsonResult;

1 个答案:

答案 0 :(得分: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得到回应”,你就无能为力了 如果有可能使传入格式正确,那么最好这样做。