- 我们创建一个匹配 json 的 xsd 模式
- 从 xsd 模式生成 ac# 类
- 使用newtonsoft.json将json反序列化为object和object to xml(基于生成的类)
这是必需的,因为我们使用的产品只能处理 xml 而不能处理 json。这适用于大多数 json 响应。
现在我们必须在传入的 json 中支持其他属性(任何)。所以我们创建了一个带有“ProcessContents = lax”的“Any”元素的xsd 模式。生成的类包含如下所示的任何元素。
public System.Xml.XmlElement Any
{
get { return this.anyField; }
set { this.anyField = value; }
}
以下是不同 Json 输入的行为。
- json 必须包含名称“Any”以匹配任何元素。这不满足附加属性的想法。
- 我可以添加一个“JsonProperty("SomeName")”,但我仍然应该知道我不知道的附加属性名称。
有人可以提供一种方法来做到这一点。谢谢。
Edit1: 在建议使用 JsonExtensionData 之后,该类看起来像这样。
我看到附加属性被反序列化为一个对象,如下图所示。 收到错误:“无法序列化 System.Collections.Generic.Dictionary`2 类型的成员 .AdditionalProperties [[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089]],因为它实现了 IDictionary。"} 问:如何解决这个问题并将其序列化为 XmlAny 元素?谢谢。