プロが教える店舗&オフィスのセキュリティ対策術

こちらのサイト
http://qiita.com/rbtnn/items/b2ec6c7dee792e66ac75
を参考に、DBで取得した値をJSON形式にしてjavascriptに渡したいです。
サイトのdynamic datasetにべた書きではなく、DBで取得したDatasetのデータを入れたところ、
型 'System.Globalization.CultureInfo' のオブジェクトのシリアル化を実行中に循環参照が見つかりました。
とエラーが発生してしまいました。
これはどうしたら解消できるのでしょうか。

最終的な目的は、GoogleMapのスクリプトに緯度経度や情報ウィンドウに表示させる値を渡して表示させたいと考えています。
JSON形式でaspx.csで作成した文字列をjsファイルに渡すのが一番よいという結論にいたったのですが、
他によい方法があればご指摘お願いします。

A 回答 (1件)

DataTableをそのままシリアライズすると、リレーションが定義されている場合など、そのような現象が起きます。


Membersテーブルで、所属マスタである Sections テーブルを参照している場合などで、Member に Section を参照するプロパティが存在すると、Section には Members を参照する属性が付加される、相互参照です。

なので、シリアライズする場合は、その項目(実際に値が入っているわけではない、単なる参照項目)をシリアライズ対象から外すか、相互参照属性の一方を一時的に削除するか、全く別のオブジェクトに値を「つめ換え」て、それをシリアライズするようにします。

値のマッピングには Automapper.NET を(すでにお使いなら蛇足ですが)
http://mono-comp.com/programming/automapper
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!