Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在C中反序列化json时出错#_Asp.net_Json - Fatal编程技术网

Asp.net 在C中反序列化json时出错#

Asp.net 在C中反序列化json时出错#,asp.net,json,Asp.net,Json,我得到了json这样的响应 data={"Id": "234", "Name": "pinky", "MobileNumber": "", "ClassName": "Class1_Physics", "DOBTime": "1990-04-11 15:46:38", "Landline": "", "Status": "Unmarried"} 我想反序列化json并插入到表中。 我为它创建了两个类,并使用Newtonsoft的dll进行反序列化 public class JsonResu

我得到了json这样的响应

data={"Id": "234", "Name": "pinky", "MobileNumber": "", "ClassName": "Class1_Physics",   "DOBTime": "1990-04-11 15:46:38", "Landline": "", "Status": "Unmarried"}
我想反序列化json并插入到表中。 我为它创建了两个类,并使用Newtonsoft的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); }
    }
}
public类JsonResult
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共字符串MobileNumber{get;set;}
公共字符串类名{get;set;}
公共字符串时间{get;set;}
公共字符串固定线路{get;set;}
公共字符串状态{get;set;}
}
公共类JsonResultRoot
{
[JsonProperty(PropertyName=“data”)]
公共字符串数据{get;set;}
公共JsonResult JsonResult
{
获取{返回JsonConvert.DeserializeObject(数据);}
}
}
代码:
decodedUrl:存储实际的json数据/字符串
var JsonData=JsonConvert.decodedUrl.JsonResult

如果您的JSON包含此
数据=
部分,则它是无效的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);
public类JsonResult
{
公共字符串Id{get;set;}
公共字符串名称{get;set;}
公共字符串MobileNumber{get;set;}
公共字符串类名{get;set;}
公共字符串时间{get;set;}
公共字符串固定线路{get;set;}
公共字符串状态{get;set;}
}
//用法:
jsonString=jsonString.Replace(“data=).Trim();
var jsonObject=JsonConvert.DeserializeObject(jsonString);
当然,总的来说,这看起来很糟糕。只有在“您得到了类似于此的json响应”并且对此无能为力的情况下,才应该这样做。
如果有任何可能使传入的格式正确,那么最好这样做