可以在我的类的JSON版本中添加属性而不在类中存在吗?

时间:2012-09-17 09:22:09

标签: c# json class serialization properties

我有List<>个对象。他们的类没有'color'属性(String) - 但我可以在序列化之前为每个列表元素派生此属性的值。

唯一的方法是在JSON对象中包含此属性以将其添加到类中,然后序列化整个事物吗?

或者是否有一种方法/方法来添加需要出现在JSON对象中的属性,否则在我的课程中它将毫无用处?

我知道使用各种字符串操作方法是可能的,但是这样做感觉不对。

我正在使用 DataContractJsonSerializer

2 个答案:

答案 0 :(得分:3)

您可以创建一个data contract surrogate,透明地用另一个类的实例替换您的类的实例。这个新类看起来像任何东西,但在你的情况下,它只会有额外的Colour属性。

这样做的好处是保留了列表项的原始类型;代理在序列化过程中创建,现有代码根本不需要触及它们。

答案 1 :(得分:1)

我想你可以创建一个继承自List对象的新类,并在主类上添加不可用的字符串。

创建JSON时,只需使用派生类,该派生类将包含添加的字符串值,并继承原始对象中的所有其余数据。