【发布时间】:2016-03-17 23:06:44
【问题描述】:
我正在使用从 XML 序列化的 JSON 对象。 XML 的所有子节点都需要序列化为数组。我已经尝试了几天,但什么也没找到,但我已经接近了。问题是 JsonConvert.SerializeObject() 似乎将其视为单个项目数组,然后删除 JSON 中的 [] 数组指示符。这是我一直在做的例子。
想要的结果是这样的:
{"Foo":[{"Bar":[{"This":"stuff"}]}]}
到目前为止,让我最接近的是这样的事情......
XElement bar = new XElement("Bar");
bar.SetAttributeValue("This", "stuff");
XElement[] foo = { new XElement("Foo", bar) };
但还是不太对劲。我运行JsonConvert.SerializeObject(foo) 后得到的结果是这样的......
{"Foo":{"Bar":{"This":"stuff"}}}
对于 API,父节点的每个子节点都必须是数组类型,即使它只包含 1 个元素。这个请求的 XML 版本,我用不了,长这样……
<Foo>
<Bar This="stuff"/>
</Foo>
我有一种感觉,我忽略了一些简单的事情,或者让事情变得比它需要的更复杂,但我真的需要一些帮助。
谢谢!
【问题讨论】:
-
看起来您正在使用 Newtonsoft 的库。您可以构建嵌套的
Dictonarys 和Dictionarys 的数组,而不是自己构建 JSON 对象,并让JsonConvert.Tostring为您完成所有繁重的工作。 -
如果可行,请告诉我,我会为您写一个答案;)
-
我已经尝试过类似的方法,结果出现了转换错误,看起来像这样。
Dictionary<string,string> dic = new Dictionary<string,string>(); dic.add("This","stuff"); Dictionary<string,Dictionary<string,string>> dic2 = new Dictionary<string,Dictionary<string,string>>(); dic2.add("Bar", dic); -
参考这个:convert-xml-to-json-array-when-only-one-object 并使用JsonConvert.SerializeXNode(...)
-
回复:您对
Dictionarys 的使用:您需要使用Dictionarys 的数组才能使其正常工作。单个Dictionary始终转换为 JSON 对象,从不转换为 JSON 数组。
标签: c# arrays json xml json.net