【发布时间】:2018-12-05 06:30:48
【问题描述】:
在处理一个我想序列化为 JSON 的类时,我遇到了一个我不确定如何最好地解决的情况。它与具有固定和随机属性的 JSON 结构有关(固定:始终具有相同的属性名称,随机:它们的名称是随机的)。此外,固定属性始终为string 类型,随机属性始终为MyJsonClass2 类型。
例如:
{
"fixedName1": "value1",
"fixedName2": "value2",
"randomName1": { ... },
"randomNameN": { ... }
}
这可以使用Dictionary<string, object> 来表示。但是因为总是给出fixedName1 和fixedName2,所以我希望将它们作为固定声明,并且只有字典中的变量如下:
class MyJson
{
public string fixedName1 = "blah1";
public string fixedName2 = "blah2";
public Dictionary<string, MyJsonClass2> randomNames = new Dictionary<string, MyJsonClass2>();
}
这里的问题是,当它被序列化时,来自randomNames 的值被包含在一个名为 randomNames 的属性中,这是有道理的,但这不是我希望看到的。有没有办法告诉 Newtonsoft JSON 序列化器 ignore 字典名称?或者定义这样一个类的最佳方式是什么?
【问题讨论】:
-
你可以创建一个
JsonConverter。不确定是否有更好的选择。 -
你可以实现一个自定义的 JsonConverter。但是,您所描述的似乎有些奇怪。你为什么要这个?
-
JsonTypedExtensionDataAttribute和TypedExtensionDataConverter<MyJson>从 this answer 到 How to deserialize a child object with dynamic (numeric) key names? 可能是您需要的。同意吗?
标签: c# json serialization json.net