¿Cómo crear una cadena JSON en JavaScript?


96
window.onload = function(){
    var obj = '{
            "name" : "Raj",
            "age"  : 32,
            "married" : false
            }';

    var val = eval('(' + obj + ')');
    alert( "name : " + val.name + "\n" +
           "age  : " + val.age  + "\n" +
           "married : " + val.married );

}

En un código como este, estoy tratando de crear una cadena JSON solo para jugar. Es un error de lanzamiento, pero si pongo todo el nombre, la edad, el matrimonio en una sola línea (línea 2), no es así. ¿Cuál es el problema?


Respuestas:


85

Javascript no maneja cadenas en varias líneas.

Deberá concatenar esos:

var obj = '{'
       +'"name" : "Raj",'
       +'"age"  : 32,'
       +'"married" : false'
       +'}';

También puede usar literales de plantilla en ES6 y superior: ( consulte aquí la documentación )

var obj = `{
           "name" : "Raj",
           "age" : 32,
           "married" : false,
           }`;

13
O coloque \ al final de cada línea en el literal.
Phrogz

3
Para cadenas de varias líneas, en lugar de comillas simples o dobles, puede usar `(carácter de tilde a la izquierda de la tecla # 1). Estos se denominan "literales de plantilla".
Azul

5
Definitivamente: no se conforme con esta respuesta y mire a los demás.
AsTeR

Los literales de plantilla son ECMA Script 2015 Standard. Esta pregunta y respuesta ya son de 2012. Pero lo
editaré

De Verdad? ¿La concatenación de cadenas desde cero es la mejor manera de construir JSON? Creo que la otra respuesta debería ser la respuesta aceptada.
rory.ap

264

La forma en que lo hago es:

   var obj = new Object();
   obj.name = "Raj";
   obj.age  = 32;
   obj.married = false;
   var jsonString= JSON.stringify(obj);

Supongo que de esta manera se pueden reducir las posibilidades de errores.


62

La función JSON.stringify convertirá su objeto json en una cadena:

var jsonAsString = JSON.stringify(obj);

En caso de que el navegador no lo implemente (IE6 / IE7), use el script JSON2.js . Es seguro ya que usa la implementación nativa si existe.


23

Esto puede ser bastante fácil y simple.

var obj = new Object();
obj.name = "Raj";
obj.age = 32;
obj.married = false;

//convert object to json string
var string = JSON.stringify(obj);

//convert string to Json Object
console.log(JSON.parse(string)); // this is your requirement.


5

Creo que esta forma te ayuda ...

var name=[];
var age=[];
name.push('sulfikar');
age.push('24');
var ent={};
for(var i=0;i<name.length;i++)
{
ent.name=name[i];
ent.age=age[i];
}
JSON.Stringify(ent);

-6

Las cadenas de json no pueden tener saltos de línea. Habría que hacer que todo primera línea: {"key":"val","key2":"val2",etc....}.

Pero no genere cadenas JSON usted mismo. Hay muchas bibliotecas que lo hacen por usted, la mayor de las cuales es jquery .


8
JSON puede tener saltos de línea, pero la sintaxis literal de cadena de JavaScript no.

internamente dentro de una cadena, sí, pero no entre pares clave / valor.
Marc B

1
Creo que está confundiendo la sintaxis literal de cadena de JavaScript que no puede contener un carácter de nueva línea sin escape y marcado JSON. El marcado JSON ciertamente puede contener saltos de línea.

1
... pegue el código de su pregunta en jsonlint.com (sin el etc .... por supuesto) . Después de hacer clic en Validar, verá que en realidad inserta nuevas líneas cuando imprime de forma bonita.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.