Manejo datos pasados en ejs como este: Funciona bien.
let parsed_json = JSON.parse('<%-JSON.stringify(passed_data)%>');Pero, ¿cómo puedo pasar una variable de cadena como el nombre de datos pasados dentro de esta cadena? Lo siguiente no funciona. La salida es simplemente " + pass_data + "
let name_of_variable = 'passed_data'; let parsed_json = JSON.parse('<%-JSON.stringify(' + name_of_variable + ')%>'); console.log(parsed_json); --- + passed_data +También tengo otra pregunta para pasar json cuando estoy en eso. Parece extraño que tenga que clasificar el objeto json pasado y luego analizarlo nuevamente. Pero si solo quiero usar el objeto json pasado, solo obtengo esto.
[object Object]¿Es esta la forma prevista?
Puede intentar usar literales de plantilla como a continuación:
let name_of_variable = 'passed_data'; let parsed_json = `<%-${JSON.stringify(name_of_variable)}%>`; console.log(parsed_json); Pero, ¿por qué está encadenando name_of_variable ya que su valor es una cadena y no puede JSON.parse ejs sintaxis? Será útil que pueda explicar con más detalle lo que quiere lograr exactamente. Gracias.
Sí, si intenta encasillar (o convertir un objeto en una cadena), se mostrará como [objeto Objeto]. Pruebe lo siguiente en la consola. Es por eso que normalmente usamos JSON.stringify() para cambiar un objeto o datos JSON a forma de cadena y JSON.parse() para recuperar el formato de objeto o JSON a partir de datos en cadena.
console.log({a:'1'} + '')