12

これらの関係を持つエンティティがあるとしましょう:これは単なる架空の例であり、現在のエンティティではありません。

  • コース
  • ユーザー
  • ニュース投稿

コースには多くのユーザーがいます, ユーザーには多くのコースがあります

Courses には多くの NewsPosts があり、NewsPosts には多くの Courses があります

ユーザーには多数の NewsPost があり、NewsPosts には多数のユーザーがいます

最初に .NET Web API で Entity Framework コードを使用しています。これはエンティティを JSON の形式で送り返します。コースを取得しようとすると、エンティティの関係を含む JSON の結果が返されますが、これは問題ありませんが、シリアル化するレベルの数に制限を設定して、最初の関係を超えてすべての関係をシリアル化しないようにしたいと考えています。または第 2 レベル。

GET Course/ は次のようにシリアル化されます。

   {
     "Users":[{
                "id":1,
                "newsPosts": [{
                                "id":1,
                                "message":"foo"
                             }]
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }

私が望むのは、結果が次のようになるように、1 つまたは 2 つのレベルのみをシリアル化することです。

   {
     "Users":[{
                "id":1,
                "newsPosts": []
             }],
   "newsPosts":[{
                 "id":2,
                 "message":"bar"
               }]   

   }

追加しました:

    json.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;

これは、参照ループを削除するためです。

つまり、シリアル化するノードの最大量を設定する方法はありますか?

4

4 に答える 4

-3

これは、 get 関数から送信するデータをどのように構築するかという単純な問題ではありませんか?

つまり、JSON シリアライザーは、与えられたすべてのデータをシリアル化することでその仕事を行います。単にデータを削除するか、データを含めないでください。シリアル化されません。

カスタム JsonWriter を探しているのがより細かい調整である場合は、Alex Filipovici によって投稿されたリンクが、それを達成するために何をすべきかについての詳細を提供します。

于 2013-05-02T14:47:14.407 に答える