将列表对象从javascript转换为JSON
我的web服务中已经有了由另一个团队开发的类对象结构。 我需要将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; }
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
}
]
}