Convertir objeto JS a cadena JSON

1246

Si definí un objeto en JS con:

var j={"name":"binchen"};

¿Cómo puedo convertir el objeto a JSON? La cadena de salida debe ser:

'{"name":"binchen"}'
Bin Chen
fuente
63
JSON.stringify()es el método que estás buscando.
Gowtham Gopalakrishnan
10
Siempre hay esa primera vez cuando tienes que aprenderlo.
Egan Wolf

Respuestas:

1923

Todos los navegadores actuales tienen compatibilidad nativa con JSON incorporada. Por lo tanto, siempre y cuando no se trate de navegadores prehistóricos como IE6 / 7, puede hacerlo tan fácilmente como eso:

var j = {
  "name": "binchen"
};
console.log(JSON.stringify(j));

Andris
fuente
55
descargar esta secuencia de comandos con el fin de JSON.stringify(j);que el trabajo
AabinGunz
2
El trabajo en nodejs porque el uso nodo mismo motor
georgelviv
26
Esta respuesta se publicó un año antes del lanzamiento de IE9, por lo que, al momento de escribir, IE8 era un navegador moderno, o al menos era el IE más nuevo disponible.
Andris
JSON.stringify no convierte objetos anidados. ¿Alguna solución para eso .. ??
Ritesh
99
Si necesita una cadena json más legible, puede usar parámetros de espacio comovar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel el
110

Con JSON.stringify()encontrado en json2.js o nativo en la mayoría de los navegadores modernos.

   JSON.stringify(value, replacer, space)
        value       any JavaScript value, usually an object or array.

       replacer    an optional parameter that determines how object
                    values are stringified for objects. It can be a
                    function or an array of strings.

       space       an optional parameter that specifies the indentation
                    of nested structures. If it is omitted, the text will
                    be packed without extra whitespace. If it is a number,
                    it will specify the number of spaces to indent at each
                    level. If it is a string (such as '\t' or ' '),
                    it contains the characters used to indent at each level.

       This method produces a JSON text from a JavaScript value.
Ignacio Vazquez-Abrams
fuente
66
Por un poco más de claridad: replacer es opcional, por lo que si desea seguir utilizando el spacearg pones nulla replacer. Si está interesado en usar esta función para una impresión bonita, esta respuesta también le resultó útil: stackoverflow.com/a/7220510/857209
Glenn Lawrence
34

Echa un vistazo actualizado / mejor manera por Thomas Frank:

Actualización 17 de mayo de 2008: pequeño desinfectante agregado al método toObject. Ahora toObject () no evaluará () la cadena si encuentra algún código malicioso en ella. Para aún más seguridad: No establezca el indicador includeFunctions en verdadero.

Douglas Crockford, padre del concepto JSON, escribió uno de los primeros stringifiers para JavaScript. Más tarde, Steve Yen, en Trim Path, escribió una versión mejorada que he usado durante algún tiempo. Son mis cambios a la versión de Steve los que me gustaría compartir con ustedes. Básicamente surgieron de mi deseo de hacer el stringifier:

  • manejar y restaurar referencias cíclicas
  • incluir el código JavaScript para funciones / métodos (como opción)
  • excluya miembros del objeto de Object.prototype si es necesario.
Sarfraz
fuente
23

Puede usar el método JSON.stringify () para convertir el objeto JSON en String.

var j={"name":"binchen"};
JSON.stringify(j)

Para el proceso inverso, puede usar el método JSON.parse () para convertir JSON String a JSON Object.

Aravindan Venkatesan
fuente
Gracias por agregar el proceso inverso.
David Lavieri
12

JSON.stringify(j, null, 4) le daría JSON embellecido en caso de que necesite embellecimiento también

El segundo parámetro es el sustituto. Se puede usar como filtro, donde puede filtrar ciertos valores clave al encadenar. Si se establece en nulo, devolverá todos los pares de valores clave

Vignesh Murugan
fuente
11

En angular JS

angular.toJson(obj, pretty);

obj: entrada que se serializará en JSON.

bonito (opcional):
si se establece en verdadero, la salida JSON contendrá nuevas líneas y espacios en blanco. Si se establece en un entero, la salida JSON contendrá esa cantidad de espacios por sangría.

(predeterminado: 2)

Nazrul Islam
fuente
10

Si está utilizando AngularJS, el filtro 'json' debería hacerlo:

<span>{{someObject | json}}</span>
Ariel Cabib
fuente
9

JSON.stringify convierte un objeto Javascript en texto JSON y almacena ese texto JSON en una cadena.

La conversión es un objeto a cadena

JSON.parse convierte una cadena de texto JSON en un objeto Javascript.

La conversión es una cadena de objetos

var j={"name":"binchen"};

para convertirlo en una cadena JSON se podría utilizar el siguiente.

JSON.stringify({"key":"value"});

JSON.stringify({"name":"binchen"});

Para obtener más información, puede consultar este enlace a continuación.

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify

Dulith De Costa
fuente
7

Una costumbre definida para esto, hasta que lo hagamos extraño por el método stringify

var j={"name":"binchen","class":"awesome"};
var dq='"';
var json="{";
var last=Object.keys(j).length;
var count=0;
for(x in j)
{
json += dq+x+dq+":"+dq+j[x]+dq;
count++;
if(count<last)
   json +=",";
}
json+="}";
document.write(json);

SALIDA

{"name":"binchen","class":"awesome"}

EN VIVO http://jsfiddle.net/mailmerohit5/y78zum6v/

Rohit Kumar
fuente
no escapa de cadenas con comillas como: "a \" en una cadena "
alphakevin
1
Ese código personalizado está muy incompleto. No admite matrices, objetos y caracteres especiales. Ejemplo: el json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "tecla \" con caracteres \\ especiales} ":" el valor "} generará {" arr ":" 1,2,3 "," obj ":" [objeto Objeto] "," clave "con caracteres \ especiales}:" valor "} ¡eso está mal!
Manuel Romeiro
7

Estaba teniendo problemas con la falta de memoria de stringify y otras soluciones no parecían funcionar (al menos no pude hacer que funcionaran), que fue cuando me topé con este hilo. Gracias a Rohit Kumar , solo recorro mi gran objeto JSON para evitar que se bloquee

var j = MyObject;
var myObjectStringify = "{\"MyObject\":[";
var last = j.length
var count = 0;
for (x in j) {
    MyObjectStringify += JSON.stringify(j[x]);
    count++;
    if (count < last)
        MyObjectStringify += ",";
}
MyObjectStringify += "]}";

MyObjectStringify le daría su representación de cadena (tal como se mencionó otras veces en este hilo), excepto que si tiene un objeto grande, esto también debería funcionar, solo asegúrese de construirlo para satisfacer sus necesidades , necesitaba que tuviera un nombre que matriz

Sam
fuente
5

Woking ... Fácil de usar

$("form").submit(function(evt){
  evt.preventDefault();
  var formData = $("form").serializeArray(); // Create array of object
  var jsonConvert = JSON.stringify(formData);  // Convert to json
});

Gracias

Subroto Biswas
fuente
3

puedes usar la función stringify nativa como esta

const j={ "name": "binchen" }

/** convert json to string */
const jsonString = JSON.stringify(j)

console.log(jsonString) // {"name":"binchen"}

Alongkorn Chetasumon
fuente
3

si desea obtener el valor de las propiedades json en formato de cadena, use la siguiente manera

var i = {"x":1}

var j = JSON.stringify(i.x);

var k = JSON.stringify(i);

console.log(j);

"1"

console.log(k);

'{"x":1}'
KARTHIKEYAN.A
fuente
3

Para la depuración en Node JS puede usar util.inspect () . Funciona mejor con referencias circulares.

var util = require('util');
var j = {name: "binchen"};
console.log(util.inspect(j));
Pavel Netesa
fuente
3

Los reemplazos JSON existentes eran demasiado para mí, así que escribí mi propia función. Esto parece funcionar, pero podría haber pasado por alto varios casos extremos (que no ocurren en mi proyecto). Y probablemente no funcionará para ningún objeto preexistente, solo para datos de fabricación propia.

function simpleJSONstringify(obj) {
    var prop, str, val,
        isArray = obj instanceof Array;

    if (typeof obj !== "object") return false;

    str = isArray ? "[" : "{";

    function quote(str) {
        if (typeof str !== "string") str = str.toString();
        return str.match(/^\".*\"$/) ? str : '"' + str.replace(/"/g, '\\"') + '"'
    }

    for (prop in obj) {
        if (!isArray) {
            // quote property
            str += quote(prop) + ": ";
        }

        // quote value
        val = obj[prop];
        str += typeof val === "object" ? simpleJSONstringify(val) : quote(val);
        str += ", ";
    }

    // Remove last colon, close bracket
    str = str.substr(0, str.length - 2)  + ( isArray ? "]" : "}" );

    return str;
}
Hauke
fuente
2
So in order to convert a js object to JSON String: 

La sintaxis simple para convertir un objeto en una cadena es

JSON.stringify(value)

La sintaxis completa es: JSON.stringify (valor [, sustituto [, espacio]])

Veamos algunos ejemplos simples. Tenga en cuenta que toda la cadena obtiene comillas dobles y todos los datos en la cadena se escapan si es necesario.

JSON.stringify("foo bar"); // ""foo bar""
JSON.stringify(["foo", "bar"]); // "["foo","bar"]"
JSON.stringify({}); // '{}'
JSON.stringify({'foo':true, 'baz':false}); /* " 
{"foo":true,"baz":false}" */



const obj = { "property1":"value1", "property2":"value2"};
const JSON_response = JSON.stringify(obj);
console.log(JSON_response);/*"{ "property1":"value1", 
"property2":"value2"}"*/
Rahul Choudhary
fuente
2
Sería genial si pudiera proporcionar una breve explicación de su código.
jonny
Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente reputación , podrá comentar cualquier publicación ; en su lugar, proporcione respuestas que no requieran una aclaración del autor de la pregunta . - De la opinión
Rafael
He editado mi respuesta, muchas gracias por señalar a @Rafael y @ jonny.
Rahul Choudhary
1

Solo use JSON.stringifypara hacer tal conversión; sin embargo, recuerde que los campos que tienen undefinedvalor no se incluirán en json

var j={"name":"binchen", "remember":undefined, "age": null };

var s=JSON.stringify(j);

console.log(s);

El campo remember'desaparecer' de la salida json

Kamil Kiełczewski
fuente
Acabas de salvarme el día. No pude guardar mi objeto. ¡La clave de que los campos que tienen un valor indefinido no se incluirán en json resolvió mi problema!
Mohammad Ghonchesefidi
0

Puede usar el método JSON.stringify () para convertir el objeto JSON en String.

var j={"name":"hello world"};
JSON.stringify(j);

Para convertir esta cadena de nuevo a objeto json, puede usar el método JSON.parse ().

realnikunj
fuente
0

utilizar JSON.stringify(param1, param2, param3);

Que es: -

param1 -> valor para convertir a JSON

param2 -> función para stringificar a su manera. Alternativamente, sirve como una lista blanca para los objetos que deben incluirse en el JSON final.

param3 -> Un tipo de datos de Número que indica el número de espacios en blanco para agregar. El máximo permitido son 10.

Deepak Agrawal
fuente
0

convertir str => obj

const onePlusStr = '[{"marca": "oneplus"}, {"modelo": "7T"}]';

const onePLusObj = JSON.parse (onePlusStr);

convertir obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Referencias de análisis JSON en JS:
JSON.parse (): haga clic en
JSON.stringify (): haga clic en

yash
fuente
¿Puedes proporcionar más información? Referencias, etc.
Nodejs-nerd
Referencias de análisis JSON en JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash
gracias, ¿puedes editar tu respuesta para incluir esto?
Nodejs-nerd
0

Método muy fácil de usar, pero no lo use en la versión (debido a posibles problemas de compatibilidad).

Genial para probar de tu lado.

Object.prototype.toSource()

//Usage:
obj.toSource();
bodich
fuente
0

Usa la función stringify

var j = {
"name":"binchen"
};

var j_json = JSON.stringify(j);

console.log("j in json object format :", j_json);

Feliz codificación !!!

Deseo kaleba
fuente
0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // pasa el objeto que quieres convertir en formato de cadena

Geetanshu Gulati
fuente
-1

Utilizar este,

var j={"name":"binchen"};
 var myJSON = JSON.stringify(j);
MKR
fuente
-24

si tiene una cadena json y no está envuelta con [], envuélvala primero

var str = '{"city": "Tampa", "state": "Florida"}, {"city": "Charlotte", "state": "North Carolina"}';
str = '[' + str + ']';
var jsonobj = $.parseJSON(str);

O

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
Bhaumik Mehta
fuente
El OP está tratando de ir hacia otro lado. Su pregunta responde al caso inverso donde tiene una cadena JSON y quiere obtenerla como un objeto.
Joshua Snider
1
has hecho lo contrario a la pregunta ... deberías usar la función JSON.stringfy ()
Hardik Patel