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



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

谢谢!

相关内容

  • 没有找到相关文章

最新更新