繁体   English   中英

C#中来自XML的JSON中的单元素嵌套数组

[英]Single Element Nested Arrays in JSON from XML in C#

我正在使用从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>

我感觉自己正在忽略一些简单的事情,或者使它变得比它需要的复杂,但是我确实可以使用一些帮助。

谢谢!

评论中的Hunts Chen具有重定向来解决我的问题。 这就是工作代码最终的样子。

        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"}]}]}}

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM