2

別のチームによって開発された Web サービスで、これらのクラス オブジェクトの構造を既に持っています。JSON データを class に投稿する必要がありますCartObject (int CustomerID, List<CartListObject> CartList)

ここに内部の要素CartListObject

public int ItemID { set; get; }
public ItemObject Item { set; get; }
public int Quantity { set; get; }

アイテムオブジェクト:

public int ID { set; get; }
public string Name { set; get; }
public List<ItemImageObject> ItemGallery { set; get; }

アイテム画像オブジェクト:

public int ItemID { set; get; }
public string ImageName { set; get; }

CartObjectWeb サービスに投稿する必要がある JSON データがどのようになっているのかわかりません。

どんなアイデアでも大歓迎です。

4

2 に答える 2

1

jsFiddle Demo

基本的に、これらのオブジェクトを JavaScript で作成するには、コンストラクターをセットアップする必要があります。データが自動的に適切にバインドされるように、命名は予想されるタイプと正確に一致する必要があります。

これは、JavaScript でモデルのほぼ正確なセットアップをコピーすることを意味します。

var CartListObject = function(itemId,item,quantity){
 this.ItemId = itemId;
 this.Item = item;//ItemObject
 this.Quantity = quantity;
};

var ItemObject = function(id, name, itemGallery){
 this.ID = id;
 this.Name = name;
 this.ItemGallery = itemGallery;//List<ItemImageObject>
};

var ItemImageObject = function(itemId, imageName){
 this.ItemID = itemId;
 this.ImageName = imageName; 
};

そして、次のようなデータで構築します(たとえば、偽のデータ):

var CartList = [];//List<CartListObject>

var someItem = new ItemImageObject(1,"hello");
var someItem2 = new ItemImageObject(2,"world");

var someObj = new ItemObject(1,"holder",[someItem,someItem2]);

var someCart = new CartListObject(1,someObj,4);

CartList.push(someCart);

そして、それを ajax 投稿 (または通常の投稿) で使用します。

//post ajax:
//data: { CustomerID: 6, CartList: CartList },
于 2013-10-07T23:32:15.210 に答える
1

あなたの質問は受信側に関して漠然としています:どの言語/フレームワーク/ライブラリがJSONを受信して​​いますか?

また、受信アプリケーションは型を認識し、適切にキャストする必要があります。ItemObjectJSON はプリミティブ値 (オブジェクト、配列、数値、文字列) で構成されているため、のようなオブジェクトItemImageObjectは失われます。JSON はList厳密に型指定されたベクトルも認識しませんが、これらは配列に変換されます。

これを行う方法は他にもあると確信していますが、これは私の見解です(いくつかの偽の値があります):

{
    "CustomerID": 102,
    "CartList": [
        {
            "ItemID": 1,
            "Item": {
                "ID": 4242,
                "Name": "Lorem Ipsum",
                "ItemGallery": [
                    {
                        "ItemID": 55,
                        "ImageName": "Dolor Sit"
                    },
                    {
                        "ItemID": 56,
                        "ImageName": "Amet Palor"
                    }
                ]
            },
            "Quantity": 12
        },
        {
            "ItemID": 2,
            "Item": {
                "ID": 5656,
                "Name": "Edipiscing Elit",
                "ItemGallery": [
                    {
                        "ItemID": 62,
                        "ImageName": "Tellus Eros"
                    },
                    {
                        "ItemID": 63,
                        "ImageName": "Velit Nec"
                    }
                ]
            },
            "Quantity": 13
        }
    ]
}
于 2013-10-07T23:32:39.600 に答える