C# 如何将JSON反序列化到列表?

C# 如何将JSON反序列化到列表?,c#,.net,json,asp.net-mvc,serialization,C#,.net,Json,Asp.net Mvc,Serialization,我有一个序列化的JSON字符串serializedClaims- var claims = new List<Claim>(); claims.Add(new Claim("MakerId", "939393", ClaimValueTypes.String)); claims.Add(new Claim(ClaimTypes.DateOfBirth, "1956-03-08", ClaimValueTypes.Date)); var serializedClaims = Jso

我有一个序列化的JSON字符串
serializedClaims
-

var claims = new List<Claim>();

claims.Add(new Claim("MakerId", "939393", ClaimValueTypes.String));
claims.Add(new Claim(ClaimTypes.DateOfBirth, "1956-03-08", ClaimValueTypes.Date));

var serializedClaims = JsonConvert.SerializeObject(claims); 
var索赔=新列表();
添加(新的索赔(“MakerId”,“939393”,ClaimValueTypes.String));
添加(新索赔(ClaimTypes.DateOfBirth,“1956-03-08”,ClaimValueTypes.Date));
var serializedClaims=JsonConvert.SerializeObject(声明);
现在我想反序列化
serializedClaims
回到
列表


如何执行此操作?

您可以通过在转换中指定
列表
类型来执行此操作

var dserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims); 
var dserializedClaims=JsonConvert.DeserializeObject(serializedClaims);

您可以通过指定的
列表
类型进行转换

var dserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims); 
var dserializedClaims=JsonConvert.DeserializeObject(serializedClaims);
你可以这样做

List<Claim> deserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims);
List deserializedClaims=JsonConvert.DeserializeObject(serializedClaims);
你可以这样做

List<Claim> deserializedClaims = JsonConvert.DeserializeObject<List<Claim>>(serializedClaims);
List deserializedClaims=JsonConvert.DeserializeObject(serializedClaims);

您可以使用JsonConvert反序列化对象,还可以为json数据格式指定其设置。如

      var settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver(),
            NullValueHandling = NullValueHandling.Ignore,
            DateParseHandling = DateParseHandling.None
        };
       List<Claim> claims =JsonConvert.DeserializeObject<List<Claim>>(serializedClaims, settings);
var设置=新的JsonSerializerSettings
{
ContractResolver=新的CamelCasePropertyNamesContractResolver(),
NullValueHandling=NullValueHandling.Ignore,
DateParseHandling=DateParseHandling.None
};
List claims=JsonConvert.DeserializeObject(serializedClaims,设置);

使用此设置,您可以忽略空值并提供日期解析处理

您可以使用JsonConvert反序列化对象,还可以为json数据格式指定其设置。如

      var settings = new JsonSerializerSettings
        {
            ContractResolver = new CamelCasePropertyNamesContractResolver(),
            NullValueHandling = NullValueHandling.Ignore,
            DateParseHandling = DateParseHandling.None
        };
       List<Claim> claims =JsonConvert.DeserializeObject<List<Claim>>(serializedClaims, settings);
var设置=新的JsonSerializerSettings
{
ContractResolver=新的CamelCasePropertyNamesContractResolver(),
NullValueHandling=NullValueHandling.Ignore,
DateParseHandling=DateParseHandling.None
};
List claims=JsonConvert.DeserializeObject(serializedClaims,设置);

使用此设置,您可以忽略空值并提供日期解析处理

Does
JsonConvert.DeserializeObject(serializedClaims)不起作用?不,它不起作用,错误为“找不到System.Security.Claims.Claim的构造函数”@GilliVilla您必须将构造函数添加到您的
Claim
类中。具体来说,您必须添加默认构造函数,因此
public Claim(){…}
。这是因为在封面下,
JsonConvert
正在迭代
serializedClaims
中的JSON对象,并使用默认构造函数为每个对象创建一个新的
声明
,并使用反射使用JSON对象中类似命名的条目填充该对象的属性。Does
JsonConvert.DeserializeObject(serializedClaims)不起作用?不,它不起作用,错误为“找不到System.Security.Claims.Claim的构造函数”@GilliVilla您必须将构造函数添加到您的
Claim
类中。具体来说,您必须添加默认构造函数,因此
public Claim(){…}
。这是因为在封面下,
JsonConvert
正在迭代
serializedClaims
中的JSON对象,并使用默认构造函数为每个对象创建一个新的
声明
,并使用反射使用JSON对象中类似命名的条目填充该对象的属性。它应该是
JsonConvert.DeserializeObject(…
。现在它就像Nihal Rp的答案一样。它应该是
JsonConvert.DeserializeObject(…
。现在它就像Nihal Rp的答案一样。不。出错。不。出错。