我有一个.NET 4.5应用程序。目前我正在编写一个列表,该列表输出到XML文件:
List<string[]> list = new List<string[]> { };
list.Add(new string[] { "text1", "this is text 1" });
list.Add(new string[] { "text2", "this is text 2" });
list.Add(new string[] { "text3", "this is text 3" });
list.Add(new string[] { "text4", "this is text 4" });
using (XmlWriter writer = XmlWriter.Create("output.xml"))
{
writer.WriteStartDocument();
writer.WriteStartElement("texts");
foreach (string[] item in list)
{
writer.WriteElementString(item[0], item[1]);
}
writer.WriteEndElement();
writer.WriteEndDocument();
}
此输出返回如下:
<?xml version="1.0" encoding="utf-8"?>
<texts>
<text1>this is text 1</text1>
<text2>this is text 2</text2>
<text3>this is text 3</text3>
<text4>this is text 4</text4>
</texts>
在此列表中运行JsonConvert.SerializeObject()
将返回以下内容:
[
["text1", "this is text 1"],
["text2", "this is text 2"],
["text3", "this is text 3"],
["text4", "this is text 4"]
]
当然,这不是那么有用。更有用的是:
{
"text1": "this is text 1",
"text2": "this is text 2",
"text3": "this is text 3",
"text4": "this is text 4"
}
完成这项工作的最佳方法是什么?
答案 0 :(得分:3)
最简单的方法:JsonConvert.SerializeObject(list.ToDictionary(p => p[0], p => p[1]))
或者您可以编写自己的自定义JsonConverter
UPD :正如@Equalsk指出的那样,只有当字符串数组中的第一项是唯一的(text1,text2等)时,此代码(没有自定义转换器)才会起作用
答案 1 :(得分:0)
您可以使用词典而不是列表来获取结果。如果只有键值对,请使用Dictionary。如果你有更多,你可以使用元组。如果没有将它包起来并编写自己的自定义转换器。