domingo, 15 de septiembre de 2024

JSON.stringify()

El método JSON.stringify() convierte un objeto o valor de JavaScript en una cadena de texto JSON, opcionalmente reemplaza valores si se indica una función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.


Sintaxis

JSON.stringify(value[, replacer[, space]])

Parámetros

value

El valor que será convertido a una cadena JSON.


replacerOpcional

Una función que altera el comportamiento del proceso de conversión a cadena de texto, o un array de objetos String o Number que representan una lista de elementos válidos que se incluyen en la cadena JSON. Si este valor es null o no se define, todas las propiedades del objeto son incluidas en la cadena de texto JSON resultante.


spaceOpcional

Un objeto de tipo String o Number que se utiliza para insertar un espacio en blanco dentro de la cadena de salida JSON para mejorar su legibilidad.Si es de tipo Number, indica el número de espacios a usar como espacios en blanco; este número está limitado se limita a 10 (si es mayor, el valor es sólo 10). Los valores inferiores a 1 indican que no se deben utilizar espacios.Si es de tipo String, la cadena de texto (o sus 10 primeros caracteres, si es mayor) se utiliza como espacios en blanco. Si este parámetro no se define o es null, no se utilizará ningún espacio en blanco.


Valor devuelto

Una cadena de texto JSON que representa el valor dado.


Excepciones

Lanza una excepción TypeError ("cyclic object value") cuando encuentra una referencia circular.


Descripción

JSON.stringify convierte un valor a notación JSON representándolo:


Si el valor tiene un método toJSON(), es responsable de definir qué será serializado.

Los objetos Boolean, Number, and String se convierten a sus valores primitivos, de acuerdo con la conversión semántica tradicional.

Si durante la conversión se encuentra un undefined, una Function, o un Symbol se omite (cuando se encuentra en un objeto) o se censura a null (cuando se encuentra en un array). JSON.stringify() puede devolver undefined cuando se pasan valores "puros" como JSON.stringify(function(){}) o JSON.stringify(undefined).

Todas las propiedades que utilicen Symbol en los nombres de la clave se ignoran por completo, incluso si utilizan una función replacer.

Las instancias de Date implementan la función toJSON() devolviendo una cadena de texto (igual que date.toISOString()). Por lo que son tratadas como strings.

Los números Infinity y NaN, así como el valor null, se consideran null.

El resto de instancias de Object (incluyendo Map, Set, WeakMap, y WeakSet) sólo tendrán serializadas sus propiedades enumerables.


Ejemplo en js


JSON.stringify({}); // '{}'

JSON.stringify(true); // 'true'

JSON.stringify("foo"); // '"foo"'

JSON.stringify([1, "false", false]); // '[1,"false",false]'

JSON.stringify([NaN, null, Infinity]); // '[null,null,null]'

JSON.stringify({ x: 5 }); // '{"x":5}'


JSON.stringify(new Date(2006, 0, 2, 15, 4, 5));

// '"2006-01-02T15:04:05.000Z"'


JSON.stringify({ x: 5, y: 6 });

// '{"x":5,"y":6}'

JSON.stringify([new Number(3), new String("false"), new Boolean(false)]);

// '[3,"false",false]'


// Elementos de array identificados por string no son enumerables y no tienen sentido en JSON

let a = ["foo", "bar"];

a["baz"] = "quux"; // a: [ 0: 'foo', 1: 'bar', baz: 'quux' ]

JSON.stringify(a);

// '["foo","bar"]'


JSON.stringify({ x: [10, undefined, function () {}, Symbol("")] });

// '{"x":[10,null,null,null]}'


// Estructuras de datos standard

JSON.stringify([

  new Set([1]),

  new Map([[1, 2]]),

  new WeakSet([{ a: 1 }]),

  new WeakMap([[{ a: 1 }, 2]]),

]);

// '[{},{},{},{}]'


// TypedArray

JSON.stringify([new Int8Array([1]), new Int16Array([1]), new Int32Array([1])]);

// '[{"0":1},{"0":1},{"0":1}]'

JSON.stringify([

  new Uint8Array([1]),

  new Uint8ClampedArray([1]),

  new Uint16Array([1]),

  new Uint32Array([1]),

]);

// '[{"0":1},{"0":1},{"0":1},{"0":1}]'

JSON.stringify([new Float32Array([1]), new Float64Array([1])]);

// '[{"0":1},{"0":1}]'


// toJSON()

JSON.stringify({

  x: 5,

  y: 6,

  toJSON() {

    return this.x + this.y;

  },

});

// '11'


// Símbolos:

JSON.stringify({ x: undefined, y: Object, z: Symbol("") });

// '{}'

JSON.stringify({ [Symbol("foo")]: "foo" });

// '{}'

JSON.stringify({ [Symbol.for("foo")]: "foo" }, [Symbol.for("foo")]);

// '{}'

JSON.stringify({ [Symbol.for("foo")]: "foo" }, function (k, v) {

  if (typeof k === "symbol") {

    return "a symbol";

  }

});

// undefined


// Propiedades no enumerables:

JSON.stringify(

  Object.create(null, {

    x: { value: "x", enumerable: false },

    y: { value: "y", enumerable: true },

  }),

);

// '{"y":"y"}'


 Fuentes.

Artículo:   "JSON.stringify()" Publicado en https://developer.mozilla.org/ por MDN contributors el 28 jul 2024. Consultado el 22/08/2024.

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


No hay comentarios:

Publicar un comentario