3

私は次のコードを持っています.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 から読み取り可能ですか?

4

2 に答える 2

3

これを簡単に修正するには、ディクショナリを使用せず、代わりにカスタム データ オブジェクトを使用します。おそらく 1 つのプロパティを使用します。

class Album
{
  public string Name{get;set;}
}

これで、このカスタム クラスのリストをシリアライズ/デシリアライズできます。

 string json = JsonConvert.SerializeObject(YourListOfAlbum, Formatting.Indented);   

             

于 2012-05-14T23:31:58.237 に答える
3

2 番目のキーが最初のキーの値を上書きするため、同じ文字列 "name" を使用する複数のキーを持つ辞書を作成することはできません。代わりに、次のようなオブジェクトの配列を作成する必要があります。

[
  {"name": "the allman brothers"},
  {"name": "the beach boys"}
]
于 2012-05-14T23:30:27.503 に答える