5
我正在使用(Newtonsoft的)JSON.Net庫與C#,我想定製其默認的XML轉換的單一部分。自定義JSON到XML轉換使用JSON.Net
例如,如果我想改變陣列的XML轉換,不如說我有以下的JSON字符串:
{
"object":
{
"a":
{
[
"d",
"e",
"f"
]
}
}
}
如果我使用JSON.Net的默認轉換器將其轉換爲XML,我得到:
<object>
<a>d</a>
<a>e</a>
<a>f</a>
</object>
但是,我想它轉換爲:
<object>
<a special:type="array">
<element>d</element>
<element>e</element>
<element>f</element>
</a>
</object>
我可以以某種方式利用現有轉換的方法並改變一下?
XML和JSON都是基於樹的結構,應該使它們的分析器模塊化。於是我找了,我可以用它來覆蓋它的轉換函數的精神類:
protected override XmlNode ToXmlNode(JsonNode jNode)
{
if (jNode.Type == JsonType.Array)
{
XmlNode xNode = this.XDocument.CreateElement(jNode.Name)
foreach (JsonNode jSub in jNode.Children)
{
var newJSub = jSub.Clone();
newJSub.Name = "element";
xNode.AppendChild(this.ToXmlNode(newJSub));
}
return xNode;
}
else
return base.ToXmlNode(jNode);
}
(我使用的.Net 2.0)
有誰知道什麼可以幫幫我?
我看不到任何方式來重寫您需要在XmlNodeConverter類中。您可能需要製作自己的JsonTextWriter繼承器並將其傳遞給XmlNodeConverter。 – Brannon