Кажется, много разных библиотек и то, что, похоже, не приходило и не уходило в предыдущие годы.Однако по состоянию на апрель 2016 года это решение работало хорошо для меня. Струны легко заменяются на целые .
TL / DR;Скопируйте это, если вы пришли сюда:
//outputfilename will be something like: "C:/MyFolder/MyFile.txt"
void WriteDictionaryAsJson(Dictionary<string, List<string>> myDict, string outputfilename)
{
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Dictionary<string, List<string>>));
MemoryStream ms = new MemoryStream();
js.WriteObject(ms, myDict); //Does the serialization.
StreamWriter streamwriter = new StreamWriter(outputfilename);
streamwriter.AutoFlush = true; // Without this, I've run into issues with the stream being "full"...this solves that problem.
ms.Position = 0; //ms contains our data in json format, so let's start from the beginning
StreamReader sr = new StreamReader(ms); //Read all of our memory
streamwriter.WriteLine(sr.ReadToEnd()); // and write it out.
ms.Close(); //Shutdown everything since we're done.
streamwriter.Close();
sr.Close();
}
Две точки импорта.Во-первых, обязательно добавьте System.Runtime.Serliaization в качестве ссылки в свой проект в обозревателе решений Visual Studio.Во-вторых, добавьте эту строку,
using System.Runtime.Serialization.Json;
в верхней части файла с остальными значениями, чтобы можно было найти класс DataContractJsonSerializer
.Это сообщение в блоге содержит больше информации об этом методе сериализации.
Формат данных (ввод / вывод)
Мои данные - это словарь с 3 строками, каждая из которых указывает насписок строк.Списки строк имеют длину 3, 4 и 1. Данные выглядят так:
StringKeyofDictionary1 => ["abc","def","ghi"]
StringKeyofDictionary2 => ["String01","String02","String03","String04"]
Stringkey3 => ["someString"]
Вывод, записанный в файл, будет в одну строку, вот форматированный вывод:
[{
"Key": "StringKeyofDictionary1",
"Value": ["abc",
"def",
"ghi"]
},
{
"Key": "StringKeyofDictionary2",
"Value": ["String01",
"String02",
"String03",
"String04",
]
},
{
"Key": "Stringkey3",
"Value": ["SomeString"]
}]