【发布时间】:2021-01-12 21:21:34
【问题描述】:
所以,我尝试反序列化具有格式的 JSON 文件
"farmableitem": [
{
"@uniquename": "T1_FARM_CARROT_SEED",
"@tier": "1",
"@kind": "plant",
"@weight": "0.1",
"harvest": {
"@growtime": "79200",
"@lootlist": "T1_CARROT_LOOT",
"@lootchance": "1",
"@fame": "100",
"seed": {
"@chance": "0.0000",
"@amount": "1"
}
}
},
{
"@uniquename": "T5_FARM_OX_BABY",
"@tier": "5",
"@kind": "animal",
"@weight": "1.5",
"grownitem": {
"@uniquename": "T5_FARM_OX_GROWN",
"@growtime": "504000",
"@fame": "300",
"offspring": {
"@chance": "0.7867",
"@amount": "1"
}
}
]
如您所见,“收获”和“生长物”以及“种子”和“后代”基本相同...... 所以我没有理由创建两个不同的类。
我知道,如果您想为特定字段提供两个不同的 PropertyName,您可以执行以下操作:
[JsonProperty("first")]
public string Test { get; set; }
[JsonProperty("second")]
private string _test { set { Test = value; } }
但是,我不确定我是否可以对课程做同样的事情......至少我找不到解决方案。
所以,长话短说,我希望一个类有两个不同的 JsonPropertyName。有可能吗?
【问题讨论】:
-
您可以创建一个包含通用属性的基类,也可以重命名您的 json 结构以对每个通用对象使用相同的名称。后者更容易。如果正确表示您的 json 结构,那么拥有大量类并没有错。
-
只有
offspring和seed相同。其他属性有不同的属性,而不仅仅是不同的名称。 -
我会在对象上创建两个属性,
harvest和grownitem都指向同一个支持字段 -
@DavidL 等等,重命名 json 结构是什么意思?
-
@PanagiotisKanavos 属性的名称相同 => 类中的字段名称也将相同...可以预期属性将具有不同的值
标签: c# json.net deserialization json-deserialization