将 Json 文档反序列化为 C# 对象

Deserializing Json document to C# objects

C# 语言。控制台应用程序。

我有一个 json 文件,格式如下:

{"Cars":{"Mercedes": 1,"BMW": 3,"Toyota": 0},"Bikes":{"Kawasaki": 5,"Pulsar": 4}}

我有以下 classes:

    public class Vehicles  
    {  
     public Cars cars {get; set;}
     public Bikes bikes {get; set;} 
    }

    public class Cars
    {
        Dictionary<string, int> carcount {get; set;}
    }

    public class Bikes
    {
        Dictionary<string, int> bikecount {get; set;}
    }

我必须将 json 反序列化为 class。 我试过了

Vehicles jsondata = JsonConvert.DesrializeObject<Vehicles>(jsonstring);

我得到的自行车和汽车词典都为空。我知道我错过了一些非常基本的东西。但无法弄清楚到底是什么。
此外,json 字符串格式无法更改。 Class 结构可以改变。

你需要这个:

public class Vehicles
{
    public Dictionary<string, int> Cars { get; set; }
    public Dictionary<string, int>  Bikes { get; set; }
}

您没有名为 carcountbikecount 的级别。相反,你马上就有了字典。

public class Vehicles  
{
    public Dictionary<string, int> Cars {get; set;}
    public Dictionary<string, int> Bikes {get; set;}
}

请注意 属性 名称区分大小写,因此在混合大小写时要非常小心。

(按照 中描述的步骤,您可能会更轻松地完成此操作。不幸的是,这并没有考虑到字典。它至少会给你一个起点,字典应该是。)