使用 c# 将单个 XElement 转换为 Json 数组
本文关键字:Json 数组 转换 XElement 单个 使用 | 更新日期: 2023-09-27 18:26:51
JsonConvert.SerializeXNode("<Root><Student key="Student1" value="4" /> <Student key="Student2" value="0" /></Root>")
它回来了
{"Root":{Student:[{key:Student1,value=4}},Student:{key:Student2,value=0}]}
但我需要
JsonConvert.SerializeXNode("<Root><Student key="Student1" value="4" /></Root>")
从
{"Root":[{Student:{key:Student1,value=4}}]}
但它是回归
{"Root":{Student:{key:Student1,value=4}}}
任何人都可以为此提供帮助
您可以检测是否存在单个Student
元素,如果是,请在其后添加一个元素并删除所有属性。然后,将其序列化为 JSON 并执行简单的String.Replace()
以删除null
条目:
class Program
{
static void Main(string[] args)
{
var singleElement = false;
var x = XDocument
.Parse(@"<Root><Student key=""Student1"" value=""4""/></Root>");
if (x.Root.Elements().Count() == 1)
{
singleElement = true;
var single = x.Root.Elements().First();
x.Root.Elements().First().AddAfterSelf(single);
x.Root.Elements().Last().Attributes().ToList()
.ForEach(a => a.Remove());
//optionally, remove the value, if you expect one
x.Root.Elements().Last().Value = String.Empty;
}
var xml = JsonConvert.SerializeXNode(x);
if (singleElement)
xml = xml.Replace(",null", "");
}
}