2013-10-07 214 views
2

我已經在另一個團隊開發的Web服務中創建了這些類對象的結構。 我需要發佈JSON數據到類CartObject (int CustomerID, List<CartListObject> CartList)將javascript對象從javascript轉換爲JSON

這裏面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數據到網絡服務。

任何想法是讚賞。

回答

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

,然後使用它在你的阿賈克斯職位(或普通職位)

//post ajax: 
//data: { CustomerID: 6, CartList: CartList }, 
+1

工作就像一個魅力!非常非常感謝你! – Nothing

1

你問的問題是模糊的關於th e接收結束:哪些語言/框架/庫正在接收JSON?

此外,接收應用程序需要能夠識別類型並進行適當的轉換。 JSON由原始值(Object,Array,Number,String)組成,因此像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 
     } 
    ] 
} 
+0

我發佈這個JSON數據到restful web服務使用c#開發。 還有一件事,我想發送給REST的JSON也包含'CartObject'的CustomerID。 – Nothing

+0

我在這裏嘗試過'http:// jsfiddle.net/N3BNw /',但是當我在Chrome POSTMAN中測試時,出現錯誤'請求錯誤 服務器在處理請求時遇到錯誤。有關更多詳細信息,請參閱服務器日誌。 – Nothing

+0

@Domo刪除封裝數組符號,請參閱http://jsfiddle.net/N3BNw/1/;也爲了示例的目的我截斷了項目描述 - javascript不處理多行字符串文本(雖然它作爲一個值它只是很好)。你還有更多的屬性比問題中的更多,我相信你爲了簡單起見而將它們排除在外?Travis J的答案可能更有意義,只需要JSON.stringify CartList(實際上更新它來處理CustomerID和CartObject)。哦,我更新了我的答案。 – zamnuts