Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列表对象从javascript转换为JSON_Javascript_Json - Fatal编程技术网

将列表对象从javascript转换为JSON

将列表对象从javascript转换为JSON,javascript,json,Javascript,Json,我的web服务中已经有了由另一个团队开发的类对象结构。 我需要将JSON数据发布到类CartObject(int-CustomerID,List-CartList) 这里是CartListObject中的元素: public int ItemID { set; get; } public ItemObject Item { set; get; } public int Quantity { set; get; } ItemObject: public int ID { set; get; }

我的web服务中已经有了由另一个团队开发的类对象结构。 我需要将JSON数据发布到类
CartObject(int-CustomerID,List-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; }
我不知道我应该发布到web服务的
CartObject
的JSON数据如何

欢迎任何意见。

基本上,您需要设置构造函数以在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; 
};

关于接收端,您的问题很模糊:接收JSON的语言/框架/库是什么

此外,接收应用程序需要具有类型意识并进行适当的强制转换。JSON由原语值(对象、数组、数字、字符串)组成,因此像
ItemObject
ItemImageObject
这样的对象将丢失。JSON也不知道
List
严格类型的向量,但这些向量会转换为数组

我相信有更多的方法可以做到这一点,但这将是我的看法(有一些虚假的价值观):


我将此JSON数据发布到使用c#开发的restful web服务。还有一件事,我想发送给REST的JSON还包括
CartObject
CustomerID
http://jsfiddle.net/N3BNw/但是当我在chrome POSTMAN中测试时,我得到了一个错误
请求错误服务器在处理请求时遇到了一个错误。有关详细信息,请参阅服务器日志。
@Domo删除封装数组符号,请参阅;出于示例的目的,我还截断了项目描述——javascript不处理多行字符串文字(尽管作为一个值,它做得很好)。而且你有比问题中更多的属性,我相信你为了简单起见把它们遗漏了?Travis J的回答可能更有意义,只是需要JSON.stringify CartList(实际上更新它以处理CustomerID和CartObject)。哦,我更新了我的答案。亲爱的,我尝试了你的解决方案,但仍然得到相同的错误。@Domo也许服务器需要的不仅仅是JSON(或更多属性);向其他团队索取API规范。您使用什么方法/库/过程将数据发送到服务(但这超出了原始问题的范围)?工作非常出色!非常感谢!
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);
//post ajax:
//data: { CustomerID: 6, CartList: CartList },
{
    "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
        }
    ]
}