したがって、私は MVC4 を使用するのが初めてで、バックエンドでのオブジェクトのシリアル化はかなり「魔法のよう」に思えるので、これを間違った方法で行っている場合はお知らせください。
ただし、私の目標は、単純な REST API を構築し、JSON を返すことです。System.Json を使用して JsonObject を返すだけだと考えました。この質問のためにこれを単純化しましたが、実際の問題ではオブジェクトははるかに複雑です。
これが私のコントローラーです....
....
public class ActionsController : ApiController
{
// GET api/actions
public JsonObject Get()
{
JsonObject testObjet = new JsonObject();
testObjet.Add("Name", "Test name");
testObjet.Add("Description", "Test Description");
return testObjet;
}
....
私は見ることを期待します:
{"Name":"Test name","Description":"Test Description"}
代わりに、次のように表示されます。
{"Name":[],"Description":[]}
JsonObject の文字列を返すと、実際にはより良い結果が得られるようです。または、オブジェクト自体を返すだけでも、列挙型があり、数値ではなく名前を返したいと考えています。これが、カスタマイズのために JsonObject につながった理由です。 .
なぜそれが値を落としているのか誰かが知っていますか?
編集:だから、以下のダンのコメントのために、XMLシリアライザーがJSONオブジェクトで何を吐き出すかを見るために笑いを試みたところ、以下の例外が発生しました...
「タイプ 'System.Json.JsonPrimitive' データ コントラクト名 'JsonPrimitive: http://schemas.datacontract.org/2004/07/System.Json ' は想定されていません。」
したがって、System.Json.JsonObject オブジェクトは予期しない型を使用しているため、シリアル化できないようです。
それは衝撃的です。誰にも回避策がありますか?そうでない場合は、値の代わりにシリアル化するときに列挙型の名前を表示する方法を見つけるために出発します。