2016-09-03 8 views
0

サーバー側から来たオブジェクトをシリアル化するときは、Newtonsoftを使用するのが難しいです。Newtonsoftは同じ値、異なるオブジェクトを持つオブジェクトをシリアル化しません

2つの要素を持つコレクションList<ObjectExample>があります。そのObjectExampleの要素の一部が同じ場合は、そのうちの1つのみをシリアル化します。以下

例:

(それは一つだけを示すが、それらは異なっていなければ、 "ノームDA Entidade" または "ティポデEntidade" 以降は、それが示す異なる。)

「ノームda Entidade "と" Tipo de Entidade "はデータベースのテーブルを参照します。私は値を返すと、このようにそれらをシリアル化するためにLINQを使用してい

enter image description here

は:

json = JsonConvert.SerializeObject(ins /*LIST*/, Formatting.Indented, 
     new JsonSerializerSettings 
     { 
      PreserveReferencesHandling = PreserveReferencesHandling.Objects, 
      DefaultValueHandling = DefaultValueHandling.Include, 
      ObjectCreationHandling = ObjectCreationHandling.Auto 
     }); 
+1

あなたの例で私たちにあなたが何を示しているかはわかりません。あなたはそれをもっと明瞭にしてください、詳細などを含めてください。 – JLRishe

答えて

0

私はあなたの例を理解していないが、それは、これは「あなたのために何が起こっているように見えますPreserveReferencesHandling.Objectsを使用してください。 JSONを見ると、すでにシリアル化されているオブジェクトを参照する参照が$refのように見えます。

Hereは、JavaScript内の参照をどのように再構成できるかを示すコードサンプルです。

+0

私の例として申し訳ありませんが、これはまさに何が起こるかです!私はPreserveReferencesHandling.Objectsを持っていない場合、それは私に循環参照の他の問題を引き起こすでしょう – PTLearner

+0

@PTLearnerそれでは、循環参照を持たないものにあなたのオブジェクトをコピーして、_that_をシリアル化するか、オプション私はJSONを逆シリアル化するときに参照を記述し解決しました。私はそれらが2つの選択肢だと思う。 – JLRishe

関連する問題