--- title: JSON.stringify() slug: Web/JavaScript/Reference/Global_Objects/JSON/stringify translation_of: Web/JavaScript/Reference/Global_Objects/JSON/stringify ---
O método JSON.stringify()
converte valores em javascript para uma String JSON. Esses valores podem ser substituidos especificando a função replacer, ou incluindo somente as propriedades específicas, quando o array do replacer for especificado.
JSON.stringify(valor[, replacer[, espaço]])
valor
replacer
{{optional_inline}}espaço
{{optional_inline}}Number
, indica o número de caracteres espaço para usar como espaço em branco; este número é limitado em 10 se for maior que isso. Valores menores que 1 indicam que nenhum espaço deve ser usado. Se isto for uma String
, a string (ou os primeiros 10 caracteres da string, se for maior que isso) é usado como espaço em branco. Se esse parâmetro não for fornecido (ou for null), nenhum espaço em branco é usado.JSON.stringify()
converte um valor para uma notação JSON que o representa:
toJSON()
, é responsável por definir quais dados serão serializados.JSON.stringify
pode também somente retornar undefined
ao passar valores puros como JSON.stringify(function(){})
ou JSON.stringify(undefined)
.replacer
.JSON.stringify({}); // '{}' JSON.stringify(true); // 'true' JSON.stringify('foo'); // '"foo"' JSON.stringify([1, 'false', false]); // '[1,"false",false]' JSON.stringify({ x: 5 }); // '{"x":5}' JSON.stringify({ x: 5, y: 6 }); // '{"x":5,"y":6}' or '{"y":6,"x":5}' JSON.stringify([new Number(1), new String('false'), new Boolean(false)]); // '[1,"false",false]' // Symbols: 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'; } }); // '{}'
replacer
parameterO parâmetro replacer pode ser uma função ou uma matriz. Como função, são necessários dois parâmetros, a chave e os valores que estão sendo especificados. O objeto no qual a chave foi encontrada é fornecido como substituto desse parâmetro. Inicialmente, ele é chamado com uma chave vazia que representa o objeto que está sendo codificado e, em seguida, é chamado para cada propriedade no objeto ou matriz que está sendo codificada. Ele deve retornar o valor que deve ser adicionado à cadeia JSON, da seguinte maneira:
replacer
function on each property, unless the object is a function, in which case nothing is added to the JSON string.undefined
, the property is not included in the output JSON string. Nota: Você não pode usar a função replacer
para remover valoeres em uma array
. Se você retornar undefined
, null
será usado no lugar.
function replacer(key, value) { if (typeof value === "string") { return undefined; } return value; } var foo = {fundação: "Mozilla", modelo: "caixa", semana: 45, transporte: "carro", mês: 7}; var jsonString = JSON.stringify(foo, replacer);
O resultado do JSON é: {"semana":45,"mês":7}
.
Se replacer
é usado em uma array, os valores da array indicam os nomes das propriedades no objeto, que devem ser incluídas na sequência JSON resultante.
JSON.stringify(foo, ['week', 'month']); // '{"week":45,"month":7}', only keep "week" and "month" properties
space
O argumento space
O argumento pode ser usado para controlar o espaçamento na sequência final. Se for um número, os níveis sucessivos na stringficação serão recuados por esse número de caracteres de espaço (até 10). Se for uma sequência, os níveis sucessivos serão recuados por essa sequência (ou pelos dez primeiros caracteres).
JSON.stringify({ a: 2 }, null, ' '); // '{ // "a": 2 // }'
O uso de um caractere de tabulação imita a aparência padrão de impressão pretty-print.
JSON.stringify({ uno: 1, dos: 2 }, null, '\t'); // r: // '{ // "uno": 1, // "dos": 2 // }'
toJSON()
Se um objeto sendo stringificado tiver uma propriedade denominada toJSON() cujo valor é uma função, o método toJSON()
personaliza o comportamento da stringificação JSON, em vez de o objeto ser serializado, o valor retornado pelo método toJSON()
quando chamado será serializado. Por exemplo:
var obj = { foo: 'foo', toJSON: function() { return 'bar'; } }; JSON.stringify(obj); // '"bar"' JSON.stringify({ x: obj }); // '{"x":"bar"}'
JSON.stringify()
com localStorage
No caso em que você deseja armazenar um objeto criado por seu usuário e permitir que ele seja restaurado mesmo após o fechamento do navegador, o exemplo a seguir é um modelo para a aplicabilidade de JSON.stringify()
:
As funções não são um tipo de dados JSON válido, portanto, elas não funcionarão. Também alguns objetos como {{jsxref("Date")}} será uma string depois {{jsxref("JSON.parse()")}}.
// Criando um exemplo em JSON var seção = { 'telas': [], 'estado': true }; session.screens.push({ 'nome': 'telaA', 'largura': 450, 'altura': 250 }); session.screens.push({ 'nome': 'telaB', 'largura': 650, 'altura': 350 }); session.screens.push({ 'nome': 'telaC', 'largura': 750, 'altura': 120 }); session.screens.push({ 'nome': 'telaD', 'largura': 250, 'altura': 60 }); session.screens.push({ 'nome': 'telaE', 'largura': 390, 'altura': 120 }); session.screens.push({ 'nome': 'telaF', 'largura': 1240, 'altura': 650 }); // Convertendo a string JSON em JSON.stringify() // Salvando com localStorage no nome da sessão localStorage.setItem('seção', JSON.stringify(seção)); // Exemplo de como transformar a String gerada por meio de: // JSON.stringify() e salva em localStorage no objeto JSON novamente var seçãoRestaurada = JSON.parse(localStorage.getItem('seção')); // Agora, a variável seçãoRestaurada contém o objeto que foi salvo // no localStorage console.log(seçãoRestaurada);
Especificação | Status | Comentário |
---|---|---|
{{SpecName('ES5.1', '#sec-15.12.3', 'JSON.stringify')}} | {{Spec2('ES5.1')}} |
Definição inicial. Implementado em JavaScript 1.7. |
{{SpecName('ES6', '#sec-json.stringify', 'JSON.stringify')}} | {{Spec2('ES6')}} |
Navegador | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.9.1")}} | {{CompatIE("8.0")}} | {{CompatOpera("10.5")}} | {{CompatSafari("4.0")}} |
Feature | Android | Chrome para Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatGeckoMobile("1.0")}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Baseado na Kangax's compat table.