parse convertir array javascript jquery json web stringify

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 = {};