2013-10-07 3 views
2

У меня уже есть эта структура объекта класса в моем веб-сервисе, разработанная другой командой. Мне нужно отправить данные JSON в класс CartObject (int CustomerID, List<CartListObject> CartList).Преобразование объекта списка из 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; } 

Я понятия не имею, как это в JSON данные CartObject, что я должен создавать к веб-сервису.

Любая идея оценивается.

ответ

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

Работал как шарм! Огромное спасибо! – Nothing

1

Вы сомневаетесь в том, что e end end: Какой язык/структура/библиотеки получают 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 для спокойного веб-сервиса, используя C#. Еще одна вещь, JSON, которую я хочу отправить в REST, также включает 'CustomerID'' CartObject'. – Nothing

+0

Я пробовал здесь 'http: // jsfiddle.net/N3BNw /', но когда я протестировал в chrome POSTMAN, у меня появилась ошибка 'Request Error На сервере возникла ошибка при обработке запроса. Подробнее см. Журналы сервера. '. – Nothing

+0

@Domo удаляет инкапсулирующую запись массива, см. Http://jsfiddle.net/N3BNw/1/; также я обрезал описание элемента для примера - javascript не обрабатывает многострочные строковые литералы (хотя в качестве значения он просто отлично). Кроме того, у вас гораздо больше свойств, чем в вопросе, я уверен, что вы оставили их ради простоты?Ответ Трэвиса J может иметь больше смысла, просто нужно JSON.stringify CartList (фактически обновить его для обработки CustomerID и CartObject). О, и я обновил свой ответ. – zamnuts

Смежные вопросы