将List对象从javascript转换为JSON

时间:2013-10-07 23:20:19

标签: javascript json

我已经在我的Web服务中有这些类对象的结构由另一个团队开发。 我需要将JSON数据发布到类CartObject (int CustomerID, List<CartListObject> CartList)

这里是CartListObject内的元素:

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

ItemObject:

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

ItemImageObject:

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

我不知道我应该将CartObject的JSON数据发布到网络服务中。

任何想法都表示赞赏。

2 个答案:

答案 0 :(得分: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 },

答案 1 :(得分:1)

关于接收端,你的问题很模糊:什么语言/框架/库正在接收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
        }
    ]
}