0

私は MVC4 コントローラーを使用して、サーバー上で、Kendo UI データソースで使用するフィルター条件の宣言を (とりわけ) 含む .json ファイルを読み取ります。

それをオブジェクトにロードし、JsonResult を介してクライアントに送信したいと思います。

これは、送信したい json 部分です。

{
    activate: {
        logic: "or",
        filters: [
            { field: "fieldA", operator: "eq", value: 100 },
            {
                logic: "and",
                filters: [
                    { field: "fieldA", operator: "lt", value: 100 },
                    { field: "fieldB", operator: "eq", value: true }
                ]
            }
        ]
    }
}

json データをマップするクラスを定義しました。

public class ItemModel
{
    public Object activate { get; set; }
} 

型として Object を使用していますが、そこに含まれる値が異なる可能性があるため、再帰構造ではないか、「演算子」として予約語が含まれています。

次に、json を読み取ります。

JsonSerializer serializer = new JsonSerializer();
ItemModel i = serializer.Deserialize<ItemModel>(new JsonTextReader(reader));

この時点で、"Object" を "activate" json オブジェクトの型として定義したため、変数に、そのベースとして "Newtonsoft.Json.Linq.JContainer" を参照するオブジェクトが見つかりました。 "Json(i)" に渡すと、クライアントでは "[[[]]、[[[[[]]、[[]]、[[]]]、[[[]]」のような結果になります。

「オブジェクト」オブジェクト (または Json() パーサーが問題を起こす同等のもの) のシリアル化の代わりに、実際の json データをクライアントに返すことは可能ですか? どのように?

ありがとうございました

4

1 に答える 1

0

これまでに見つけた最善の方法は、返されたオブジェクトで「JsonConvert.SerializeObject」を使用することです。

JsonSerializer serializer = new JsonSerializer();
ItemModel i = serializer.Deserialize<ItemModel>(new JsonTextReader(reader));
JsonConvert.SerializeObject(i, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
于 2013-01-10T13:30:25.597 に答える