我在从XML转换的一些json中有以下内容:
"ForSaleStatus":{"items":{"item":{"label":"Not For Sale","value":"2"}}}
这是从下拉列表生成的应用程序的一些xml。我想在C#中将其转换为此内容:
"ForSaleStatus":"2"
这是我到目前为止的代码:
var xml = i;
var root = XElement.Parse(xml);
// remove ALL empty elements such as <items/>
root.Descendants().Where(e => string.IsNullOrEmpty(e.Value)).Remove();
// convert the node to JSON for easier processing
var json = JsonConvert.SerializeXNode(root);
任何人都可以想到转换json的方法,还是我最好回到XML并继续研究?
XML看起来像这样:
<ForSaleStatus>
<items>
<item>
<label>Not For Sale</label>
<value>2</value>
</item>
</items>
</ForSaleStatus>
答案 0 :(得分:1)
提取所需的值会更容易,只需从中构造json:
var json = JsonConvert.SerializeObject(new Dictionary<string, string>
{
[root.Name.ToString()] = root.XPathSelectElement("items/item/value").Value
});
如果您没有为您编译,请使用以下旧语法:
var json = JsonConvert.SerializeObject(new Dictionary<string, string>
{
{ root.Name.ToString(), root.XPathSelectElement("items/item/value").Value }
});
编辑:如果您需要所有项目的值:
var json = JsonConvert.SerializeObject(root
.XPathSelectElements("items/item")
.ToDictionary(
x => x.XPathSelectElement("label").Value,
x => x.XPathSelectElement("value").Value
));