反序列化json中的嵌套对象并分配给c#列表

问题描述

我有一个 json,我正在阅读并尝试将其转换为 PackageCategory 列表

[
    {
        "PackageCategory": [
            {
                "Size": "xxx","Dimension": {
                    "Height": "000.0","Length": "1200.0","Breadth": "3300.0"
                },"Cost": "10.0m"
            },{

                "Size": "yyy","Dimension": {
                    "Height": "1200.0","Length": "1400.0","Breadth": "5500.0"
                },"Cost": "790.5m"

            },{

                "Size": "zzz","Dimension": {
                    "Height": "2550.0","Length": "4030.0","Breadth": "1600.0"
                },"Cost": "8.5m"

            }
        ]
    }
]

我想将其反序列化为 C# 列表对象 List

public class PackageCategory
    {
        public string Size { get; set; }
        public PackageSize Dimension { get; set; }
        public decimal Cost { get; set; }
}
public class PackageSize
    {
        public double Height { get; }
        public double Length { get; }
        public double Breadth { get; }
}

我正在使用以下代码,但为列表对象 listObjects 获取空值

using (StreamReader r = new StreamReader(@"\listofPackageCategory.json"))
            {
                string json = r.ReadToEnd();
                var listObjects = JsonConvert.DeserializeObject<List<packageCategory>>(json)
}

也试过

JavaScriptSerializer ser = new JavaScriptSerializer();
var listObjects = ser.Deserialize<List<PackageCategory>>(json);

这也不起作用 请帮忙寻找解决方

解决方法

您需要一个 Root 对象来反序列化:
JsonConvert.DeserializeObject<List<Root>>

class Root
{
    public List<PackageCategory> PackageCategory;
}