Así que estoy creando este juego de preguntas. Tengo un archivo ejs en una ruta, donde recopilo preguntas y respuestas con el elemento de entrada, y al hacer clic en el botón Enviar, se crea una matriz que contiene muchos objetos, uno para cada pregunta y para sus respuestas. y luego esta matriz se configura para que sea el valor del botón de envío, que está envuelto en un formulario que lo llevará a /creado con un método de publicación. Entonces quiero usar la matriz en server.js, donde estoy manejando rutas; lo estoy haciendo con req.body.name, que es el nombre del botón de envío. La cuestión es que estaba obteniendo esto: ['[objeto Objeto], [objeto Objeto]'] Entonces, después de buscar, descubrí que, en primer lugar, para agregar los objetos a la matriz, en el archivo ejs, debería ser usando array.push(JSON.stringify(obj)). Hice eso, y esto es lo que recibí:
[ '{"question":"question1","answers":[{"text":"asnwer1","correct":true},{"text":"asnwer2","correct":false}]},{"question":"question2","answers":[{"text":"asnwer3","correct":true},{"text":"asnwer4","correct":false}]}' ]Y esto no es lo que quiero obtener, quiero tener una matriz con dos objetos js separados, no json, y no quiero que todo sea weapper con ''. quiero que sea:
[ {question:"question1", answers: [{text:"asnwer1",correct:true}, {text:"asnwer2",correct:false} ]}, {question:"question2", answers:[ {text:"asnwer3",correct:true}, {text:"asnwer4",correct:false} ]} ]entonces en server.js donde estoy manejando rutas, usé: let bla = JSON.parse (req.body.name) Pero obtengo:
SyntaxError: Unexpected token , in JSON at position 105
Creo que hay muchos errores que estoy cometiendo, así que por favor ayuda...
JSON.parse() analiza el objeto JSON y lo convierte en objeto javascript. Tiene una cadena de colección de objetos separados por comas, por eso JSON.parse arroja un error. Solo puede analizar objetos JSON, no comas. Entonces, debe eliminar esas comas, dividirlas en objetos y luego analizarlas.
La solución de demostración estará a continuación para dividir y luego analizar cada objeto y actualizarlo en una matriz
let array = [ '{"question":"question1","answers":[{"text":"asnwer1","correct":true},{"text":"asnwer2","correct":false}]},{"question":"question2","answers":[{"text":"asnwer3","correct":true},{"text":"asnwer4","correct":false}]}' ] var arrayAfterSplit = array[0].split(',{"question"') for(let i = 0;i<arrayAfterSplit.length;i++) { if(i > 0) { arrayAfterSplit[i] = '{"question"'+arrayAfterSplit[i]; } arrayAfterSplit[i] = JSON.parse(arrayAfterSplit[i]) // console.log(arrayAfterSplit[i]) } console.log(arrayAfterSplit)