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; }

我不知道应该如何将 JSON 数据CartObject发布到 Web 服务。

任何想法都值得赞赏。

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?

此外,接收应用程序需要能够识别类型并进行适当的转换。JSON 由原始值(对象、数组、数字、字符串)组成,因此像ItemObject,这样的对象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 回答