我有一个XML文件,格式如下:
<root>
<foos>
<foo>
<id>1</id>
<number>1245</number>
</foo>
<foo>
<id>2</id>
<number>6743</number>
</foo>
<foo>
<id>3</id>
<number>2245</number>
</foo>
</foos>
<bars>
<bar>
<id>4</id>
<number>123</number>
</bar>
<bar>
<id>5</id>
<number>321</number>
</bar>
</bars>
</root>
请注意,foos
和bars
等节点数量很大。
我想以下列格式将此结构解析为JSON:
{
foos: [
{
id: 1,
number: 1245
},
{
id: 2,
number: 6743
},
{
id: 3,
number: 2245
}
],
bars: [
{
id: 4,
number: 123
},
{
id: 5,
number: 321
}
]
}
我试图用NewtonSoft.Json来实现它,并且它工作正常,除了节点没有按照我的意愿展平,我最终得到以下JSON:
{
foos: { foo: [
{
id: 1,
number: 1245
},
{
id: 2,
number: 6743
},
{
id: 3,
number: 2245
} }
],
bars: { bar: [
{
id: 4,
number: 123
},
{
id: 5,
number: 321
} }
]
}
有关如何实现该结构的任何提示,而无需遍历foos
和bars
等所有节点并手动展平它们?
答案 0 :(得分:1)
您可以使用Json.Net的LINQ-to-JSON API(JObjects)从XML构建JSON:
var root = XElement.Parse(xml);
var json = new JObject(
root.Elements().Select(x =>
new JProperty(x.Name.ToString(),
new JArray(
x.Elements().Select(y =>
new JObject(
y.Elements().Select(z =>
new JProperty(z.Name.ToString(),
new JValue(int.Parse(z.Value))
)
)
)
)
)
)
)
).ToString();