为 JSON 反序列化创建 C# class

Creating a C# class for JSON deserialization

我遇到了 JSON 的问题,我要回来预订酒店 API。本质上我正在获取输出并尝试创建一个 class 以便我可以将它放入一个对象中。问题是这样的:JSON 正在返回对象,我们不能很容易地使用这种格式来制作 C# class,因为它是如何格式化的:

Example of how the JSON is formatted

这是它的一个片段。属性是最高级别,然后是“宠物”。我们需要的值是 id: 5058 和 name: 允许服务动物,但是他们正在创建这个“5058”、“5059”和“2050”对象,这使得创建 class 和正确创建变得困难反序列化它。

我是 C# 的新手(以前是长期的 C 程序员),所以试图了解为这样的东西制作 class 的最佳方法,其中“5058”实际上并没有创建为a class ...我希望我们可以将该级别提取到数组或列表中?

这就是类似 json2csharp.com 的输出...

public class Pets
{
    public _5058 _5058 { get; set; }
    public _5059 _5059 { get; set; }
    public _2050 _2050 { get; set; }
} 

然后

public class _5059
{
    public string id { get; set; }
    public string name { get; set; }
}

5059 不应该是 class... 这似乎是对象的名称;我想忽略它,因为对象中的 ID: 是 5059

这行不通,因为有数以千计的 ID,我们不打算为每个 ID 创建一个单独的 class -

我想做一个class更像这样的

public class Pets
{
   public string id { get; set; } 
   public string name {get; set; }
}

这就是我收到 JSON

的方式
{
   "pets":{
      "5058":{
         "id":"5058",
         "name":"Service animals are allowed"
      },
      "5059":{
         "id":"5059",
         "name":"Service animals are exempt from fees/restrictions"
      },
      ...
   }
}

(这是一个小片段)

同样,在这里,他们有 "5059":{"id":"5059","name":"Service animals...."

那么,在不为 ID 创建 class 的情况下,在 C# 中使用 class 摄取它的最佳方法是什么,就像 JSON 到 C# class创作者会怎么做?

谢谢你的帮助

看起来像 Dictionary<string, Pet>,其中 50585059 等是键。

public class Data
{
    public Dictionary<string, Pet> pets { get; set; }
}

public class Pet
{
    public string id { get; set; }

    public string name { get; set; }
}

反序列化 json 如下

var data = JsonSerializer.Deserialize<Data>(json);

或者如果您使用的是 Newtonsoft.Json

var data = JsonConvert.DeserializeObject<Data>(json);