将列表对象从javascript转换为JSON

Convert List object from javascript to JSON

本文关键字:转换 JSON javascript 列表 对象      更新时间:2023-09-26

我已经在我的Web服务中由另一个团队开发了这些类对象的结构。我需要将 JSON 数据发布到类 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; }

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

任何想法都是值得赞赏的。

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

你的问题对接收端含糊不清:什么语言/框架/库正在接收 JSON?

此外,接收应用程序需要具有类型感知能力并适当地进行强制转换。JSON 由原始值(对象、数组、数字、字符串)组成,因此像 ItemObjectItemImageObject 这样的对象将丢失。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
        }
    ]
}