7

C#を使用すると、フラットなシリアル化されたJSON文字列を非常に簡単に作成できます。

私の問題は、以下のようなネストされた文字列を作成したいことです

[ { 
    title: "Yes",
    id : "1",
    menu: [ { 
        title: "Maybe",
        id : "3",
        alert : "No",
        menu: [ {
            title: "Maybe Not",
            id : "8",
            alert : "No",
            menu: []
        } ]
    } ]
},
{
    title: "No",
    id : "2",
    menu: []
}]

どんな助けでも素晴らしいでしょう

4

4 に答える 4

16

MVC 3 を使用していますか? - 次のようにします。

return Json(myObectWithListProperties, JsonRequestBehavior.AllowGet);

これを使用して、必要な JavaScript オブジェクトの構造に一致する複雑な C# オブジェクトを返します。

例えば:

var bob = new {
    name = "test",
    orders = new [] {
        new  { itemNo = 1, description = "desc" },
        new  { itemNo = 2, description = "desc2" }
    }
};

return Json(bob, JsonRequestBehavior.AllowGet);

与えます:

{
    "name": "test",
    "orders": [
        {
            "itemNo": 1,
            "description": "desc"
        },
        {
            "itemNo": 2,
            "description": "desc2"
        }
    ]
}

編集:楽しみのためにもう少し入れ子にします:

var bob = new {
    name = "test",
    orders = new [] {
        new  { itemNo = 1, description = "desc" },
        new  { itemNo = 2, description = "desc2" }                  
    },
    test = new {
        a = new {
            b = new {
                something = "testing",
                someOtherThing = new {
                    aProperty = "1",
                    another = "2",
                    theThird = new {
                        bob = "quiteDeepNesting"
                    }
                }
            }
        }
    }
};

return Json(bob, JsonRequestBehavior.AllowGet);

与えます:

{
    "name": "test",
    "orders": [
        {
            "itemNo": 1,
            "description": "desc"
        },
        {
            "itemNo": 2,
            "description": "desc2"
        }
    ],
    "test": {
        "a": {
            "b": {
                "something": "testing",
                "someOtherThing": {
                    "aProperty": "1",
                    "another": "2",
                    "theThird": {
                        "bob": "quiteDeepNesting"
                    }
                }
            }
        }
    }
}
于 2012-04-27T16:13:48.293 に答える
5

使ってみて

using System.Web.Script.Serialization;

//Assumed code to connect to a DB and get data out using a Reader goes here

Object data = new {
    a = reader.GetString(field1),
    b = reader.GetString(field2),
    c = reader.GetString(field3)
};
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string json = javaScriptSerializer.Serialize(data);

これは組み込みであり、自分で JSON にシリアライズする作業を省きます!

この例では、ある種のリーダーを使用してデータベースからデータを取得し、匿名クラスを使用してシリアル化するオブジェクトを構築していると想定しています。匿名クラスは、必要に応じて単純にすることも複雑にすることもでき、JavaScriptSerializer が JSON への変換を処理します。このアプローチは、JSON で作成される JSON プロパティ名を簡単に制御できるため、便利です。

于 2012-04-27T16:15:41.340 に答える
2
using System.Web.Script.Serialization;
 


var strNJson = new
            {
                to = "hello",
                notification = new
                {
                    title = "textTitle",
                    body = "bodyText"
                }
            };
            JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
            string json = javaScriptSerializer.Serialize(strNJson);
{   "to":"hello",
       "notification": {
                        "title":"titleText",
                         "body":"bodyText"
                     } 
}
于 2020-07-17T13:07:46.093 に答える