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