我有以下代码,我希望结束是JQuery自动完成可以读取的JSON。
[System.Web.Script.Services.ScriptMethod()]
[System.Web.Services.WebMethod]
public static string GetNames(string prefixText, int count)
{
Trie ArtistTrie = (Trie)HttpContext.Current.Cache["CustomersTrie"];
List<string> list = ArtistTrie.GetCompletionList(prefixText, 10);
Dictionary<string, string> dic = new Dictionary<string, string>();
foreach (string a in list)
{
dic.Add(a, "name");
}
string json = JsonConvert.SerializeObject(dic, Formatting.Indented);
return json;
}
JSON看起来像这样:
{
"the album leaf": "name",
"the all-american rejects": "name",
"the allman brothers band": "name",
"the animals": "name",
"the antlers": "name",
"the asteroids galaxy tour": "name",
"the avett brothers": "name",
"the band": "name",
"the beach boys": "name",
"the beatles": "name"
}
这是倒退,我想要
"name" : "the allman brothers"
但....字典需要一个唯一的密钥,相同的值是可以的,
对此有什么简单的解决方法,这也可以从JQuery中读取吗?
答案 0 :(得分:3)
你不能使用相同的字符串“name”来拥有包含多个键的字典,因为第二个字符将覆盖第一个字符串的值。相反,您需要创建一个对象数组,如:
[
{"name": "the allman brothers"},
{"name": "the beach boys"}
]
答案 1 :(得分:2)
一个简单的解决方法是不使用字典而是使用自定义数据对象,可能有一个属性:
class Album
{
public string Name{get;set;}
}
现在您可以序列化/反序列化此自定义类的列表。
string json = JsonConvert.SerializeObject(YourListOfAlbum, Formatting.Indented);