Używam biblioteki Jtons.Net (Newtonsoft) z C#, i chcę dostosować pojedynczą część jego domyślnej konwersji XML.Niestandardowa konwersja JSON do XML za pomocą JSON.Net
Na przykład, gdybym chciał zmienić konwersję XML tablic, niż powiedzieć, mam następujący ciąg JSON:
{
"object":
{
"a":
{
[
"d",
"e",
"f"
]
}
}
}
Jeśli przekonwertować go do XML przy użyciu domyślnego konwerter Json.NET za otrzymuję:
<object>
<a>d</a>
<a>e</a>
<a>f</a>
</object>
Ale chcę go przekonwertować do:
<object>
<a special:type="array">
<element>d</element>
<element>e</element>
<element>f</element>
</a>
</object>
mogę jakoś wziąć istniejący sposób konwersji i trochę go zmienić?
Zarówno XML, jak i JSON są strukturami opartymi na drzewach, co powinno uczynić ich parsery modułowymi. Więc szukam klasy, które mogę wykorzystać, aby zastąpić swoją funkcję konwersji w duchu:
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);
}
(używam .NET v2.0)
Czy ktoś wie wszystko, co może Wsparcie?
Nie widzę żadnego sposobu na zastąpienie tego, czego potrzebujesz w klasie XmlNodeConverter. Prawdopodobnie będziesz musiał stworzyć własnego dziedzica JsonTextWriter i przekazać go do XmlNodeConverter. – Brannon