javascript - convertir - json.stringify to array
Stringify una matriz multidimensional con javascript (3)
Estoy creando una factura para libros, y tengo el objetivo de enviarla a través de ajax. Estoy tratando de codificar JSON el conjunto de libros en la factura, sin embargo sigo obteniendo un valor en blanco
//create item list
var order_items = [];
$(''#mi_books tbody tr.userbooks'').each(function(index)
{
var bookisbn = $(this).find(''td .mi_isbn'').text();
var bookdata = [];
bookdata[''isbn''] = bookisbn;
bookdata[''title''] = $(this).find(''.mi_title'').text();
bookdata[''qty''] = $(this).find(''.mi_qty'').text();
bookdata[''price''] = $(this).find(''.mi_price'').text();
order_items.push(bookdata);
});
alert(JSON.stringify(order_items));
alert(order_items.toString());
console.log(order_items);
alert(JSON.stringify(order_items));
Resultados: [[]]
alert(order_items.toString());
Salidas: blank
console.log(order_items);
Salida:
Array[1]
0: Array[0]
isbn: "9781401216672"
length: 0
price: "1007"
qty: "1"
title: "Batman: The Killing Joke"
__proto__: Array[0]
length: 1
__proto__: Array[0]
Mi matriz está siendo creada, pero de alguna manera parece que no puedo codificarla? ¿Estoy haciendo algo mal?
Las matrices se serializan de forma diferente con JSON.stringify()
en comparación con los objetos normales (solo se serializan las propiedades de UInt32). Como solo está agregando propiedades textuales a los bookdata
del bookdata
, debe usar objetos anónimos como este:
var bookdata = {
isbn: bookisbn,
title: $(this).find(''.mi_title'').text(),
qty: $(this).find(''.mi_qty'').text(),
price: $(this).find(''.mi_price'').text()
};
puedes probar
var order_items = {};
$(''#mi_books tbody tr.userbooks'').each(function(index)
{
var bookisbn = $(this).find(''td .mi_isbn'').text();
var bookdata = {
''isbn'': bookisbn,
''title'': $(this).find(''.mi_title'').text(),
''qty'': $(this).find(''.mi_qty'').text(),
''price'': $(this).find(''.mi_price'').text()
};
order_items[index] = bookdata;
});
alert(JSON.stringify(order_items));
su único error fue intentar crear matrices asociativas en lugar de usar objetos, eso puede hacerlo
Array
y Object
son bestias diferentes. Su bookdata
no es una matriz, sino un objeto, por lo tanto, debe crearlo con
var bookdata = {};