我的 Pokédex 项目中有一些字典,我用从文件导入的数据填充,类似于 API(或者更确切地说,我认为它们实际上是 API?无论如何,文件包含具有对象结构的数据)。
根据我从 VS 得到的错误,我一直假设数据的任何元素都必须具有相同的结构。例如,每个神奇宝贝的主 dex 列表的结构如下:
{
"name": "nameOfMon"
"variants": {
"standard": {data}
"alt_1": {otherData}
}
}
因此,每个神奇宝贝在此结构中都具有相同类型的属性,即使有些属性只是空的(例如,并非所有神奇宝贝都具有标准属性以外的变体)。
在代码中使用数据时,我为每个神奇宝贝都创建了一个类,所以当我调用它的数据时会像“
pokemon.name
”。
虽然我知道在类构造函数中我需要定义如何定义属性(例如名称,是一组
string, string
),但我真正想知道并且会派上用场的是:我可以以某种方式构造数据吗一些神奇宝贝省略了神奇宝贝不使用的数据?
例如,如果神奇宝贝不需要“变体”数据,因为它只有标准数据,是否有一种方法可以省略文件中的“变体”数据并使字典仅从中获取数据神奇宝贝跳过神奇宝贝不包含的数据?就像它是可选的一样。
一般情况下,您无需执行任何操作:
public class Person {
public string Name { get; set; }
public int Age { get; set; }
public override string ToString() => $"{Name} {Age}";
}
Console.WriteLine(JsonSerializer.Deserialize<Person>("""{"Age": 42}""")); // --> 42
因此,JSON 中可以省略属性。缺少的字段将以其类型的默认值进行初始化。