javascript - returns - stringify object js




Analisar JSON em JavaScript? (11)

Esta questão já tem uma resposta aqui:

Eu quero analisar uma string JSON em JavaScript. A resposta é algo como

var response = '{"result":true,"count":1}';

Como posso obter o result dos valores e count com isso?


A maioria dos navegadores suporta JSON.parse() , que é definido na ECMA-262 5th Edition (a especificação na qual o JavaScript é baseado). Seu uso é simples:

var json = '{"result":true,"count":1}',
    obj = JSON.parse(json);

alert(obj.count);

/* or ES6 */

const json = '{"result":true,"count":1}' || {};
const { result, count } = JSON.parse(json);
alert(result);
alert(count);

Para os navegadores que você não pode implementá-lo usando json2.js .

Conforme observado nos comentários, se você já estiver usando o jQuery, há uma função $.parseJSON que mapeia para JSON.parse se disponível, ou uma forma de eval em navegadores mais antigos. No entanto, isso executa verificações adicionais e desnecessárias que também são realizadas pelo JSON.parse , portanto, para o melhor desempenho geral, recomendo usá-lo da seguinte forma:

var json = '{"result":true,"count":1}',
    obj = JSON && JSON.parse(json) || $.parseJSON(json);

Isso garantirá que você use o JSON.parse nativo imediatamente, em vez de fazer com que o jQuery execute verificações de JSON.parse na cadeia de caracteres antes de transmiti-la à função de análise nativa.


A maneira mais fácil usando o método parse() :

var response = '{"a":true,"b":1}';
var JsonObject= JSON.parse(response);

Este é um exemplo de como obter valores:

var myResponseResult = JsonObject.a;
var myResponseCount = JsonObject.b;

Eu pensei que JSON.parse(myObject) funcionaria. Mas, dependendo dos navegadores, pode valer a pena usar eval('('+myObject+')') . O único problema que posso recomendar é a lista de vários níveis no JSON.


JSON.parse () converte qualquer string JSON passada para a função, para um objeto JSON.

Para entender melhor, pressione F12 para abrir o Elemento de Inspeção do seu navegador e vá até o console para escrever os seguintes comandos:

var response = '{"result":true,"count":1}'; // Sample JSON object (string form)
JSON.parse(response); // Converts passed string to a JSON object.

Agora execute o comando:

console.log(JSON.parse(response));

Você obterá a saída como Objeto {result: true, count: 1}.

Para usar esse objeto, você pode atribuí-lo à variável, digamos obj :

var obj = JSON.parse(response);

Agora, usando obj e o operador dot (.), Você pode acessar as propriedades do Objeto JSON.

Tente executar o comando

console.log(obj.result);

Primeiro de tudo, você precisa ter certeza de que o código JSON é válido.

Depois disso, eu recomendaria usar uma biblioteca JavaScript, como jQuery ou Prototype, se você puder, porque essas coisas são tratadas bem nessas bibliotecas.

Por outro lado, se você não quiser usar uma biblioteca e puder garantir a validade do objeto JSON, eu simplesmente colocaria a string em uma função anônima e usaria a função eval.

Isso não é recomendado se você estiver obtendo o objeto JSON de outra fonte que não é absolutamente confiável, porque a função eval permite o código renegado se você desejar.

Aqui está um exemplo de uso da função eval:

var strJSON = '{"result":true,"count":1}';
var objJSON = eval("(function(){return " + strJSON + ";})()");
alert(objJSON.result);
alert(objJSON.count);

Se você controla qual navegador está sendo usado ou não está preocupado com pessoas com um navegador mais antigo, sempre é possível usar o método JSON.parse.

Esta é realmente a solução ideal para o futuro.


Se você está recebendo isso de um site externo, pode ser útil usar o getJSON do jQuery. Se é uma lista, você pode iterar através dela com $.

$.getJSON(url, function (json) {
    alert(json.result);
    $.each(json.list, function (i, fb) {
        alert(fb.result);
    });
});

Se você passar uma variável string (uma string JSON bem formada) para JSON.parse do MVC @Viewbag que tem doublequote, '"', aspas, você precisa processá-la antes de JSON.parse ( jsonstring )

    var jsonstring = '@ViewBag.jsonstring';
    jsonstring = jsonstring.replace(/"/g, '"');  

Se você quiser usar o JSON 3 para navegadores mais antigos, você pode carregá-lo condicionalmente com:

<script>
    window.JSON || 
    document.write('<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.2.4/json3.min.js"><\/scr'+'ipt>');
</script>

Agora, o objeto window.JSON padrão está disponível para você, independentemente do navegador que um cliente esteja executando.


Se você usar o Dojo Toolkit :

require(["dojo/json"], function(JSON){
    JSON.parse('{"hello":"world"}', true);
});

Sem usar uma biblioteca, você pode usar eval - a única vez que você deve usar. É mais seguro usar uma biblioteca.

por exemplo...

var response = '{"result":true , "count":1}';

var parsedJSON = eval('('+response+')');

var result=parsedJSON.result;
var count=parsedJSON.count;

alert('result:'+result+' count:'+count);

Você pode usar a função eval como em algumas outras respostas. (Não se esqueça das chaves extras.) Você saberá por que, quando for mais fundo, ou simplesmente use a função jQuery parseJSON :

var response = '{"result":true , "count":1}'; 
var parsedJSON = $.parseJSON(response);

OU

Você pode usar este código abaixo.

var response = '{"result":true , "count":1}';
var jsonObject = JSON.parse(response);

E você pode acessar os campos usando jsonObject.result e jsonObject.count .







parsing