2012-04-06 8 views
1

私のASP.net C#コードでは、匿名型のオブジェクト(SQLからのデータに基づいている)を持つIEnumerableコンテナがあります。C#で匿名型のIEnumerableをJavaScriptオブジェクトにシリアル化する方法

var uics = entities.getData() 
    .Select(x => new 
     { 
      id = x.id 
      name = x.name 
      age = x.age 
     }); 
return Json(uics); //Serialize JSON in ASP.net MVC 3 

これは非常に簡単です:

は私のコードは次のようになりますと仮定します。これをJavaScriptにシリアライズすると、オブジェクトID、名前、年齢を持つオブジェクトの配列が取得されます。

私がしたいのは、インデックスとして参照される各オブジェクトがフィールド名と年齢を持つ、idを持つJavaScriptオブジェクトにこのデータをシリアル化することです。

どうすれば実現できますか?

+0

基本的に配列が必要なのですか? jsonは次のようになります: '[" id1 ":{name:name1、age:age1}、" id2 ":{name、name2:age:age2} –

+0

JSONは、あなたが描いているもののように見えるはずです@Alexander –

+0

おそらく、このブログ記事はどんな助けでもかまいません: http://www.west-wind.com/weblog/posts/2012/Mar/09/Using-代替JSON-Serializer-in-ASPNET-Web-API – jbl

答えて

4

あなたはIDictionaryを作成して、アクションの結果として、それを使用することができます、

var uics = entities.getData() 
    .ToDictionary(x => x.id, x => new { x.name, x.age }); 

return Json(uics); //Serialize JSON in ASP.net MVC 3 

ここで明示的に使用する匿名型のプロパティ名を指定する必要がないため、コンパイラのデフォルトにそれらを値を提供するために使用されるプロパティの名前(どちらの場合も同じです)。

+0

+1:これは私が探している回答です。この回答を実装したときに、辞書キーが強く型付けされたGUIDの場合は、最初に文字列にキャストする必要があることを発見しました。 –

関連する問題