Facebook C#SDK(6.0.10.0)とNewtonsoft.Json(4.5.0.0)を使用するasp.netmvc4アプリケーションに取り組んでいます。
FacebookClientを使用したリクエストは、expandoオブジェクトを返します。
[Authorize]
public ActionResult GetFbData(string path = "me"){
var expando = this.fb.Get(path);
return Json(expando);
}
返されたJsonは次のようになります。
[{"Key":"id","Value":"100000xxxxxxxx"},{"Key":"name","Value":"John Doe"} ... ]
私はそれをフォーマットで返したい{id:100000xxxxxxx, name:"John Doe", ... }
ので、これを私のfbクライアントを作成するコードに追加しました:
fb.SetJsonSerializers(JsonConvert.SerializeObject,
JsonConvert.DeserializeObject);
上記と同じコードが返されます:
[[[]],[[]],[[]],[[]],[[]],[[]],[[[[]],[[]]]],[[[[]],[[]]]],[[]],[[]],[[[[[[[]],[[]]...]
私は次の方法で望ましい結果を得ることができます:
return Content(JsonConvert.SerializeObject(Expando));
これは適切なJsonを返しますが、Content-Typeはtext/html; charset=utf-8
です。応答ヘッダーなどを手動で設定せずにJsonResultとして目的の形式を返すにはどうすればよいのでしょうか。シリアライザーなどを再実装せずに、デフォルトのシリアル化動作を変更したいだけです。
この動作を変更するには、 1行のコードで実行される単純なものが必要です。誰かがすでにそれを見つけていることを期待しています。