gpt4 book ai didi

c# - 使用 JSON.Net 自定义 JSON 到 XML 的转换

转载 作者:数据小太阳 更新时间:2023-10-29 01:59:26 26 4
gpt4 key购买 nike

我在 C# 中使用 (Newtonsoft 的) JSON.Net 库,我想自定义其默认 XML 转换的单个部分。

例如,如果我想更改数组的 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 v2.0)

有谁知道可以提供帮助吗?

最佳答案

在内部,Json.Net 使用一个名为 XmlNodeConverter 的特殊 JsonConverter 来执行从 JSON 到 XML 的转换,反之亦然。这个转换器看起来不是很可扩展,但你可以使用 XmlNodeConverter source code 创建你自己的自定义转换器。作为起点,然后将其重新插入 Json.Net。

XmlDocument doc = 
JsonConvert.DeserializeObject<XmlDocument>(json, yourCustomXmlNodeConverter);

关于c# - 使用 JSON.Net 自定义 JSON 到 XML 的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18304934/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com