我有一个字典对象,想要将其写入磁盘并能够从磁盘中读取。最好不要使用第三方库。是否有一种简单的方法可以在常规C# 4中实现?
答案已接受。
总结:
选项1 - 使用JavaScriptSerializer 优点:不需要第三方库。此外,使用更现代的格式,即JSON。
缺点:难以阅读 - 没有格式。此外,即使应用程序与Web无关,也需要引用不常用的System.Web.Extension程序集。
解决方案:
写入:
选项1 - 使用JavaScriptSerializer 优点:不需要第三方库。此外,使用更现代的格式,即JSON。
缺点:难以阅读 - 没有格式。此外,即使应用程序与Web无关,也需要引用不常用的System.Web.Extension程序集。
解决方案:
写入:
File.WriteAllText("SomeFile.Txt", new JavaScriptSerializer().Serialize(dictionary));
阅读:
var dictionary = new JavaScriptSerializer()
.Deserialize<Dictionary<string, string>>(File.ReadAllText("SomeFile.txt"));
选项2 - 使用Linq to Xml
优点:无需第三方库。通常不需要添加其他引用。易于阅读。
缺点:XML不如JSON等更现代的格式受欢迎。
编写:
new XElement("root", d.Select(kv => new XElement(kv.Key, kv.Value)))
.Save(filename, SaveOptions.OmitDuplicateNamespaces);
阅读:
var dictionary = XElement.Parse(File.ReadAllText(filename))
.Elements()
.ToDictionary(k => k.Name.ToString(), v => v.Value.ToString());
选项3 - 使用JSON.NET
优点:易于阅读。现代格式。
缺点:需要第三方库。
解决方案:
编写:
File.WriteAllText("SomeFile.Txt", JsonConvert.SerializeObject(dictionary));
阅读:
var dictionary = JsonConvert.DeserializeObject<Dictionary<string, string>>
(File.ReadAllText("SomeFile.txt"));