在 C# 中从 Json 数组转换为 List<T> 或 T[]

Convert to List<T> or T[] from Json array in C#

本文关键字:List 中从 Json 数组 转换      更新时间:2023-09-26

我有一个json数据:

"{'"list'":[{'"PlId'":1,'"PstId'":1,'"MonthlyValue'":'"00,00'"},{'"PlId'":2,'"PstId'":1,'"MonthlyValue'":'"00,00'"},{'"PlId'":3,'"PstId'":1,'"MonthlyValue'":'"00,00'"},{'"PlId'":4,'"PstId'":1,'"MonthlyValue'":'"00,00'"},{'"PlId'":5,'"PstId'":1,'"MonthlyValue'":'"00,00'"}]}"

我想将json数据转换为List,但JsonConvert.Deserialize(jsonData)返回null。

[Serializable]
public class DecryptedMonthlyPremiumScale
{
    [DataMember]
    public int PlId { get; set; }
    [DataMember]
    public int PstId { get; set; }
    [DataMember]
    public string MonthlyValue { get; set; }
}

我尝试了这种方法:如何使用JSON,jQuery发布复杂对象的数组 ASP.NET MVC控制器?

怎么了?谢谢。

您需要创建一个包装类才能正确反序列化:

[Serializable]
public class DecryptedMonthlyPremiumScale
{
    [DataMember]
    public int PlId { get; set; }
    [DataMember]
    public int PstId { get; set; }
    [DataMember]
    public string MonthlyValue { get; set; }
}
public class Root
{
    public IList<DecryptedMonthlyPremiumScale> list {get;set;}
}
var obj = JsonConvert<Root>(json);

另一种方法是使用 JObject 获取根元素,然后反序列化:

var parsed = JObject.Parse(json)["list"].ToObject<IList<DecryptedMonthlyPremiumScale>>();