Я отвечаю на этот старый вопрос только потому, что все остальные ответы в основном неправильные или неполные.
JSON действительно прост, поэтому, чтобы получить JSON, который вам нужен, вам нужно понять разницу между массивами JSON:
["one", "two", "three"]
и объекты / словари JSON (объекты и словари действительно одинаковы):
{"a": "one", "b": "two", "c": 3}
Обратите внимание, что элемент "c" имеет другой тип, но это не проблема для Javascript.
Учитывая это, почти каждый сериализатор, который я использую в .NET (который почти всегда является отличной библиотекой JSON.NET ), преобразует объекты .NET или словари .NET в объекты JSON.
Итак, вам нужно преобразовать список в словарь, а затем передать в сериализатор словарь или объект.
Другой вопрос: почему вы хотели бы иметь словарь со значением, равным ключу, но я приму этот момент, даже если я весьма сомнителен.
Пример:
List<string> source = new List<string>() { "a", "b", "c" };
Dictionary<string, string> dict = source.ToDictionary(el => el, el => el);
var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(dict);
// jsonString should be "{'a':'a', 'b':'b', 'c':'c'}", with more or less whitespace depending on formatting