Converter objeto JS em string JSON

1245

Se eu defini um objeto em JS com:

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

Como posso converter o objeto em JSON? A cadeia de saída deve ser:

'{"name":"binchen"}'
Bin Chen
fonte
63
JSON.stringify()é o método que você está procurando.
Gowtham Gopalakrishnan
10
Sempre há a primeira vez que você precisa aprender.
Egan Lobo

Respostas:

1923

Todos os navegadores atuais têm suporte JSON nativo embutido. Desde que você não esteja lidando com navegadores pré-históricos como o IE6 / 7, você pode fazê-lo com a mesma facilidade:

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

Andris
fonte
5
baixar este script para que JSON.stringify(j);a obra
AabinGunz
2
Trabalho sobre nodejs porque o uso nó mesmo motor
georgelviv
26
Esta resposta foi postada um ano antes do lançamento do IE9, portanto, no momento em que escrevi, o IE8 era um navegador moderno, ou pelo menos era o mais novo IE disponível.
Andris
JSON.stringify não converte objetos aninhados. Qualquer solução para isso .. ??
Ritesh
9
Se você precisar de string JSON mais legível Pode usar o parâmetro espaço comovar formattedJSON = JSON.stringify(j, null, 2);
Jacek Gzel
110

Com JSON.stringify()encontrado em json2.js ou nativo na maioria dos 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
fonte
6
Para um pouco mais de clareza: replacer é opcional, então se você quiser ainda usar o spacearg você colocar nullpara replacer. Se você estiver interessado em usar esta função para impressão bastante Eu encontrei esta resposta também ser útil: stackoverflow.com/a/7220510/857209
Glenn Lawrence
34

Confira a maneira atualizada / melhor de Thomas Frank:

Atualização 17 de maio de 2008: Desinfetante pequeno adicionado ao método toObject. Agora, toObject () não avaliará () a cadeia de caracteres se encontrar algum código malicioso. Para ainda mais segurança: não defina o sinalizador includeFunctions como true.

Douglas Crockford, pai do conceito JSON, escreveu um dos primeiros stringers para JavaScript. Mais tarde, Steve Yen, da Trim Path, escreveu uma boa versão melhorada, que eu uso há algum tempo. São minhas alterações na versão de Steve que eu gostaria de compartilhar com você. Basicamente, eles se originaram do meu desejo de fazer o stringifier:

  • manipular e restaurar referências cíclicas
  • inclua o código JavaScript para funções / métodos (como opção)
  • excluir membros do objeto de Object.prototype, se necessário.
Sarfraz
fonte
23

Você pode usar o método JSON.stringify () para converter o objeto JSON em String.

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

Para o processo reverso, você pode usar o método JSON.parse () para converter JSON String em JSON Object.

Aravindan Venkatesan
fonte
Obrigado por adicionar o processo inverso.
David Lavieri
12

Em angularJS

angular.toJson(obj, pretty);

obj: Entrada a ser serializada em JSON.

pretty (opcional):
se configurada como true, a saída JSON conterá novas linhas e espaços em branco. Se definido como um número inteiro, a saída JSON conterá muitos espaços por recuo.

(padrão: 2)

Nazrul Islam
fonte
12

JSON.stringify(j, null, 4) daria a você JSON embelezado, caso você precise de embelezamento também

O segundo parâmetro é substituto. Ele pode ser usado como filtro, onde é possível filtrar determinados valores de chave ao fazer uma string. Se definido como nulo, ele retornará todos os pares de valores-chave

Vignesh Murugan
fonte
10

Se você estiver usando o AngularJS, o filtro 'json' deve fazer isso:

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

JSON.stringify transforma um objeto Javascript em texto JSON e armazena esse texto JSON em uma sequência.

A conversão é um Objeto para String

JSON.parse transforma uma sequência de texto JSON em um objeto Javascript.

A conversão é uma String para Objeto

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

para torná-lo uma sequência JSON String poderia ser usada.

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

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

Para mais informações, consulte este link abaixo.

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

Dulith De Costa
fonte
7

Um costume definido para isso, até que façamos um método estranho do 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);

RESULTADO

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

LIVE http://jsfiddle.net/mailmerohit5/y78zum6v/

Rohit Kumar
fonte
não escapa strings com aspas como: "a \" em uma string"
alphakevin
1
Esse código personalizado está muito incompleto. Não suporta matrizes, objetos e caracteres especiais. Exemplo: o json {"arr": ["1", "2", "3"], "obj": {"a": "b"}, "chave \" com \\ caracteres especiais} ":" o valor "} produzirá {" arr ":" 1,2,3 "," obj ":" [objeto Objeto] "," chave "com \ especiais} caracteres": "valor"} errado!
Manuel Romeiro 08/02
7

Eu estava tendo problemas com o stringify ficando sem memória e outras soluções não pareciam funcionar (pelo menos eu não conseguia fazê-las funcionar), que foi quando eu tropecei nesse segmento. Graças a Rohit Kumar, eu apenas percorro meu objeto JSON muito grande para impedir que ele caia

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 daria sua representação de string (como mencionado outras vezes neste segmento), exceto se você tiver um objeto grande, isso também funcionará - apenas certifique-se de construí-lo para atender às suas necessidades - eu precisava que ele tivesse um nome que array

Sam
fonte
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
});

obrigado

Subroto Biswas
fonte
3

você pode usar a função stringify nativa como esta

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

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

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

Alongkorn Chetasumon
fonte
3

se você deseja obter o valor das propriedades json no formato de string, use o seguinte caminho

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
fonte
3

Para depuração no Nó JS, você pode usar util.inspect () . Funciona melhor com referências circulares.

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

As substituições JSON existentes eram demais para mim, então escrevi minha própria função. Isso parece funcionar, mas eu posso ter perdido vários casos extremos (que não ocorrem no meu projeto). E provavelmente não funcionará para objetos preexistentes, apenas para dados criados por eles mesmos.

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
fonte
2
So in order to convert a js object to JSON String: 

A sintaxe simples para converter um objeto em uma string é

JSON.stringify(value)

A sintaxe completa é: JSON.stringify (valor [, substituto [, espaço]])

Vamos ver alguns exemplos simples. Observe que a cadeia inteira recebe aspas duplas e todos os dados da cadeia escapam, se necessário.

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
fonte
2
Seria ótimo se você pudesse fornecer uma breve explicação do seu código.
jonny
Isso não fornece uma resposta para a pergunta. Depois de ter reputação suficiente, você poderá comentar qualquer postagem ; em vez disso, forneça respostas que não exijam esclarecimentos do solicitante . - Do comentário
Rafael
Editei minha resposta, muito obrigado por apontar @ Rafael e @ jonny.
Rahul Choudhary
1

Basta usar JSON.stringifypara fazer essa conversão - no entanto, lembre-se de que os campos que têm undefinedvalor não serão incluídos no json

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

var s=JSON.stringify(j);

console.log(s);

O campo remember'desaparecer' da saída json

Kamil Kiełczewski
fonte
Você acabou de salvar meu dia. Não pude salvar meu objeto. a chave de que campos com valor indefinido não serão incluídos no json resolveu meu problema!
Mohammad Ghonchesefidi
0

Você pode usar o método JSON.stringify () para converter o objeto JSON em String.

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

Para converter essa sequência novamente no objeto json, você pode usar o método JSON.parse ().

realnikunj
fonte
0

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

O que é: -

param1 -> valor para converter para JSON

param2 -> função para restringir à sua maneira. Como alternativa, ele serve como uma lista branca para a qual os objetos precisam ser incluídos no JSON final.

param3 -> Um tipo de dados Number que indica o número de espaços em branco a serem adicionados. O máximo permitido é 10.

Deepak Agrawal
fonte
0

converter str => obj

const onePlusStr = '[{"brand": "oneplus"}, {"model": "7T"}]';

const onePLusObj = JSON.parse (onePlusStr);

converter obj => str

const onePLusObjToStr = JSON.stringify (onePlusStr);

Referências de análise JSON em JS:
JSON.parse (): clique em
JSON.stringify (): clique em

yash
fonte
Voce pode fornecer mais informação? Referências, etc
Nodejs-nerd 24/02
Referências de análise JSON em JS: JSON.parse (): w3schools.com/js/js_json_parse.asp JSON.stringify (): w3schools.com/js/js_json_stringify.asp
yash
Obrigado, você pode editar sua resposta para incluir isso
Nodejs-nerd 25/02
0

Método muito fácil de usar, mas não o use na versão (devido a possíveis problemas de compatibilidade).

Ótimo para testar do seu lado.

Object.prototype.toSource()

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

Use a função stringify

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

var j_json = JSON.stringify(j);

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

Feliz codificação !!!

Desejo Kaleba
fonte
0
//use JSON.stringify({})

const stringified = JSON.stringify ({}) // passa o objeto que você deseja converter no formato de string

Geetanshu Gulati
fonte
-1

Usa isto,

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

se você tem uma string json e não está envolvida com [], envolva-a primeiro

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

OU

var jsonobj = eval('(' + str + ')');
console.log(jsonobj);
Bhaumik Mehta
fonte
O OP está tentando seguir o outro caminho. Sua pergunta responde ao caso inverso, onde ele tem uma string JSON e deseja obtê-la como um objeto.
Joshua Snider
1
você tem feito coisa inversa à pergunta .. você deve usar JSON.stringfy () função
Hardik Patel