2014-01-15 3 views
0

Я использую Shopify и должен добавить Qubit на сайт клиентов.Как программно добавлять вещи к объекту JS?

В любой момент времени есть объект «корзина», который показывает, какие товары находятся в корзине пользователей.

Как динамически вставлять объекты в эту структуру json?

"line_items": [{ 
     "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product.html", 
     "name": "Sparkly Shoes", 
     "description": "Description about this product", 
     "manufacturer": "The Shoe Co", 
     "category": "Shoe", 
     "subcategory": "Heels", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 130, 
     "unit_sale_price": 130, 
     "voucher": "MYVOUCHER1" 
     }, 
     "quantity": 1, 
     "subtotal": 130, 
     "total_discount": 0 
    }, { 
     "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product-dress.html", 
     "name": "Red Dress", 
     "description": "Description about this product", 
     "manufacturer": "The Dress Co", 
     "category": "Dresses", 
     "subcategory": "Red dresses", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 200, 
     "unit_sale_price": 150, 
     "voucher": "MYVOUCHER1" 
     }, 
     "quantity": 1, 
     "subtotal": 200, 
     "total_discount": 50 
    }, { 
     "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product-swimwear.html", 
     "name": "Bikini", 
     "description": "Description about this product", 
     "manufacturer": "The Bikini Co", 
     "category": "Swimwear", 
     "subcategory": "Bikini", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 100, 
     "unit_sale_price": 100, 
     "voucher": "MYVOUCHER1" 
     }, 
     "quantity": 1, 
     "subtotal": 100, 
     "total_discount": 0 
    }] 
    }, 

Взято из: http://tools.qubitproducts.com/uv/demosite/guide.html

Это может быть один продукт или два продукта, и т.д ... как бы я динамически перебирает доступных продуктов в корзине (код псевдо штраф), а затем отобразить несколько значений?


Если бы я определял вышеуказанную структуру json, как бы я сделал это динамически? Просто поместите петлю между кодом? (Чувствует себя грязным?)

+0

Я думаю, что вы можете ввести в заблуждение JSON (формат сериализации) с объектами Javascript (вещи выполнения, которыми вы можете манипулировать). Можете ли вы привести пример того, о каком коде вы думаете? – hugomg

+0

Вы спрашиваете, как добавить продукт в корзину, после получения полей данных продукта? –

ответ

1

Код, который вы предоставили, не является JSON. Это объект javascript, отсутствующий {, так как отсутствует указано. Вы можете использовать ответ Kelly J Andrews для добавления элементов в объект или копирования объекта и добавления элементов к нему для создания обновленного объекта. Чтобы получить объект JSON можно использовать JSON.stringify() как

var jsonString = JSON.stringify({"obj":{"param":"val"}}); 

или

var obj = {"obj":{"param":"val"}}; 
var jsonString = JSON.stringify(obj); 

Но в вашем случае, у вас уже есть объект. Код предоставленных разрывы строк и не является строка, так что мы можем легко бросить var obj = (плюс { вы оставили вне) и иметь:

var obj = 
{ "line_items": 
    [{ 
    "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product.html", 
     "name": "Sparkly Shoes", 
     "description": "Description about this product", 
     "manufacturer": "The Shoe Co", 
     "category": "Shoe", 
     "subcategory": "Heels", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 130, 
     "unit_sale_price": 130, 
     "voucher": "MYVOUCHER1" 
    }, 
    "quantity": 1, 
    "subtotal": 130, 
    "total_discount": 0 
    }, { 
    "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product-dress.html", 
     "name": "Red Dress", 
     "description": "Description about this product", 
     "manufacturer": "The Dress Co", 
     "category": "Dresses", 
     "subcategory": "Red dresses", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 200, 
     "unit_sale_price": 150, 
     "voucher": "MYVOUCHER1" 
    }, 
    "quantity": 1, 
    "subtotal": 200, 
    "total_discount": 50 
    }, { 
    "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product-swimwear.html", 
     "name": "Bikini", 
     "description": "Description about this product", 
     "manufacturer": "The Bikini Co", 
     "category": "Swimwear", 
     "subcategory": "Bikini", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 100, 
     "unit_sale_price": 100, 
     "voucher": "MYVOUCHER1" 
    }, 
    "quantity": 1, 
    "subtotal": 100, 
    "total_discount": 0 
    }] 
}; 

Теперь мы можем использовать решение Келли и добавить вещь к объекту:

var productToAdd = { 
    "product": { 
    "id": "123456789", 
    "sku_code": "135792468" 
    }, 
    "quantity": 3, 
    "subtotal": 369, 
    "total_discount": 0 
}; 
obj["line_items"].push(productToAdd); 

Когда мы добавляем все наши продукты к объекту мы можем JSON.stringify(), если нам нужно отправить объект как JSON обратно на сервер:

var jsonString = JSON.stringify(obj); 

Если у вас есть текущая строка JSON в ближайшие вы можете использовать JSON.parse() как

var obj = JSON.parse('{"obj":{"param":"val"}}'); 

или

var json = '{"obj":{"param":"val"}}'; 
var obj = JSON.parse(json); 

затем добавить объекты.

+0

Надеюсь, что это упорядочено. Я чувствую, что это нужно объяснять в другом порядке, чтобы избежать избыточных объяснений. – DutGRIFF

+0

Я ушел с фактического объекта с веб-сайта, предположив, что он предоставил фрагмент - это сплошная информация. –

2

После того, как у вас есть данные - она ​​должна быть достаточно простой (на основе данных Вышеупомянутый сайта) -

window.universal_variable["basket"]["line_items"].push(myProductObj); 

myProductObj будет следующее:

{ 
     "product": { 
     "id": "1234567890", 
     "sku_code": "0987654321", 
     "url": "product.html", 
     "name": "Sparkly Shoes", 
     "description": "Description about this product", 
     "manufacturer": "The Shoe Co", 
     "category": "Shoe", 
     "subcategory": "Heels", 
     "color": "n/a", 
     "stock": 3, 
     "size": "6", 
     "currency": "GBP", 
     "unit_price": 130, 
     "unit_sale_price": 130, 
     "voucher": "MYVOUCHER1" 
     }, 
     "quantity": 1, 
     "subtotal": 130, 
     "total_discount": 0 
    } 
Смежные вопросы