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
无法将JSON数组反序列化为C#列表_C#_Asp.net_Json_Serialization - Fatal编程技术网

无法将JSON数组反序列化为C#列表

无法将JSON数组反序列化为C#列表,c#,asp.net,json,serialization,C#,Asp.net,Json,Serialization,我有一个json数组,如下所示 { "odata.metadata": "https://testapp.mycomp.com/$metadata#UnitDetail", "value": [ { "Id": 1, "UnitId": 238905, "Active": false, "Name": "Rakesh", "ContactNumber": "0070002934"

我有一个json数组,如下所示

{
"odata.metadata": "https://testapp.mycomp.com/$metadata#UnitDetail",
"value": [
    {
        "Id": 1,
        "UnitId": 238905,
        "Active": false,
        "Name": "Rakesh",
        "ContactNumber": "0070002934"           
    },
    {
        "Id": 2,
        "UnitId": 238906,
        "Active": true,
        "Name": "Rahul",
        "ContactNumber": "123444003"
    },
    {
        "Id": 3,
        "UnitId": 238907,
        "Active": true,
        "Name": "Rohit",
        "ContactNumber": "1227032932"
    }
]
}

我正试图将其反序列化到c#列表中,如下所示

 var data= JsonConvert.DeserializeObject<UnitDetail[]>(json);
但这段代码并没有反序列化它

我也尝试过下面的代码,但似乎都不起作用

  JavaScriptSerializer js = new JavaScriptSerializer();
  UnitDetail[] serializedData= js.Deserialize<UnitDetail[]>(json);
JavaScriptSerializer js=新的JavaScriptSerializer();
UnitDetail[]serializedData=js.Deserialize(json);
下面也一样

List<UnitDetail> serializedData= js.Deserialize<List<UnitDetail>>(json);
List serializedData=js.Deserialize(json);
我真的不知道为什么它不起作用。任何帮助都是值得的

谢谢

您需要一个根对象

public class UnitDetail
{
    public int Id { get; set; }
    public int UnitId { get; set; }
    public bool Active { get; set; }
    public string Name { get; set; }
    public string ContactNumber { get; set; }
}

public class RootObject
{
    [JsonProperty("odata.metadata")]
    public string odata_metadata { get; set; }
    public List<UnitDetail> value { get; set; }
}
公共类单元详细信息
{
公共int Id{get;set;}
public int UnitId{get;set;}
公共bool活动{get;set;}
公共字符串名称{get;set;}
公共字符串ContactNumber{get;set;}
}
公共类根对象
{
[JsonProperty(“odata.metadata”)]
公共字符串odata_元数据{get;set;}
公共列表值{get;set;}
}
现在可以反序列化为

 var root = js.Deserialize<RootObject>(json);
var root=js.Deserialize(json);

尝试使用
JsonHelper。反序列化

List<UnitDetail> data = JsonHelper.Deserialize<List<UnitDetail>>(json);
List data=JsonHelper.Deserialize(json);

List serializedData=js.Deserialize(json)中出现的错误这似乎很好。请提供更多信息。“仅编码”和“尝试此”答案是错误的,因为它们不包含可搜索的内容,并且没有解释为什么有人应该“尝试此”。
List<UnitDetail> data = JsonHelper.Deserialize<List<UnitDetail>>(json);