C# C中XML中JSON中的单元素嵌套数组#
我正在使用从XML序列化的JSON对象。XML的所有子节点都需要序列化为数组。我已经试了几天了,什么也没找到,但我已经接近了。问题是JsonConvert.SerializeObject()似乎将其视为一个单项数组,然后删除JSON中的[]数组指示符。这是我一直在做的事情的例子 预期结果如下:C# C中XML中JSON中的单元素嵌套数组#,c#,arrays,json,xml,json.net,C#,Arrays,Json,Xml,Json.net,我正在使用从XML序列化的JSON对象。XML的所有子节点都需要序列化为数组。我已经试了几天了,什么也没找到,但我已经接近了。问题是JsonConvert.SerializeObject()似乎将其视为一个单项数组,然后删除JSON中的[]数组指示符。这是我一直在做的事情的例子 预期结果如下: {"Foo":[{"Bar":[{"This":"stuff"}]}]} 到目前为止,最接近我的是这样的 XElement bar = new XElement("Bar");
{"Foo":[{"Bar":[{"This":"stuff"}]}]}
到目前为止,最接近我的是这样的
XElement bar = new XElement("Bar");
bar.SetAttributeValue("This", "stuff");
XElement[] foo = { new XElement("Foo", bar) };
{"Foo":{"Bar":{"This":"stuff"}}}
<Foo>
<Bar This="stuff"/>
</Foo>
但这仍然不完全正确。运行JsonConvert.SerializeObject(foo)
后,我在这里得到的结果如下
XElement bar = new XElement("Bar");
bar.SetAttributeValue("This", "stuff");
XElement[] foo = { new XElement("Foo", bar) };
{"Foo":{"Bar":{"This":"stuff"}}}
<Foo>
<Bar This="stuff"/>
</Foo>
对于API,父级的每个子级都必须是数组类型,即使它只包含1个元素。此请求的XML版本(我无法使用)如下所示
XElement bar = new XElement("Bar");
bar.SetAttributeValue("This", "stuff");
XElement[] foo = { new XElement("Foo", bar) };
{"Foo":{"Bar":{"This":"stuff"}}}
<Foo>
<Bar This="stuff"/>
</Foo>
我有一种感觉,我忽略了一些简单的事情,或者让事情变得更复杂,但我真的需要一些帮助
谢谢 评论中的亨特·陈的重定向解决了我的问题。下面是工作代码最终的样子
XNamespace ns = "http://james.newtonking.com/projects/json";
XElement bar = new XElement("Bar");
userdata.SetAttributeValue(ns + "Array", true);
userdata.SetAttributeValue("This", "stuff");
XElement foo = new XElement("Foo", bar);
parts.SetAttributeValue(ns+"Array", true);
XDocument xmlbody = new XDocument();
xmlbody.Add(foo);
string json = JsonConvert.SerializeObject(xmlbody);
由于每个节点只有一个元素,因此必须强制数组。这次回归正是我想要的
{"Foo":[{"Bar":[{"@This":"stuff"}]}]}}
谢谢 看起来你正在使用Newtonsoft的库。与其自己构建JSON对象,不如构建嵌套的
dictional
s和Dictionary
s数组,并让jsonvert.Tostring
为您完成所有繁重的工作。如果可行,请告诉我,我会为您写一个答案;)我已经尝试过类似的方法,结果出现了一个转换错误,看起来是这样的<代码>字典dic=新字典();dic.添加(“本”、“材料”);字典dic2=新字典();dic2.添加(“条”,dic)代码>参考这个:并使用JsonConvert.SerializeXNode(…)Re:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your:your需要使用Dictionary
s的数组来让它。单个字典
始终转换为JSON对象,而不是JSON数组。