为 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>
,其中 5058
、5059
等是键。
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);
我遇到了 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>
,其中 5058
、5059
等是键。
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);