Exemplo de Stringify JSON – Como analisar um objeto JSON com JS

Click to rate this post!
[Total: 0 Average: 0]


Existem tantas linguagens de programação e cada linguagem tem seus próprios recursos. Mas todos eles têm uma coisa em comum: processam dados. De uma simples calculadora a supercomputadores, todos trabalham com dados.

É o mesmo com os humanos: há tantos países, tantas culturas e tanto conhecimento dentro de cada comunidade.

Mas, para se comunicar com outras comunidades, as pessoas precisam de um meio comum. A linguagem é para os humanos o que JSON é para a programação, um meio comum de transmissão de dados.

O que é JSON?

JSON significa JavaScript Objeto Notação. Portanto, antes de entender o JSON, vamos entender os objetos em JavaScript.

Cada linguagem de programação tem algum método de armazenar dados semelhantes juntos. Em C, por exemplo, eles são chamados de estruturas.

Em JavaScript, os objetos são uma coleção de pares de valores-chave, onde os valores podem ser qualquer variável (número, string, booleano), outro objeto ou mesmo uma função. Os objetos são muito úteis na programação orientada a objetos.

Programação orientada a objetos é um paradigma de programação baseado no conceito de “objetos”, que podem conter dados, na forma de campos, e código, na forma de procedimentos.

Vejamos um exemplo.

Em JavaScript, os objetos são definidos usando chaves, por exemplo:

var obj = {};

Aqui, obj é um objeto vazio. Você também pode criar objetos usando construtores, por exemplo:

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

console.log(student1.name, student1.roll_number, student1.age);
Objetos JS usando construtores

Isso daria a saída Abhishek 123 18.

É assim que você cria objetos em JavaScript. Mas esses objetos ainda são variáveis ​​específicas apenas para JavaScript.

Se você deseja exportar esses objetos e, por exemplo, enviá-los para um servidor, você precisa de um método para codificá-los. Vamos ver como isso é feito.

JSON Stringify

Para transmitir dados de um dispositivo a outro e de uma linguagem a outra, precisamos de uma convenção estruturada, uniforme e bem definida.

Embora JSON seja baseado em objetos JS, certas condições precisam ser válidas. Felizmente, você não precisa se preocupar com essas condições – porque em JavaScript, temos um método chamado JSON.stringify().

Este método é usado para converter um objeto JS em uma string codificada que pode ser transmitida em qualquer lugar sem perder nenhum dado.

Pode parecer mágico que qualquer objeto possa ser codificado em uma string e enviado para qualquer lugar. Vamos entender mais a fundo por meio de alguns exemplos.

Este é o protótipo do método stringify:

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

O primeiro parâmetro é value qual é o objeto que você deseja sequenciar. O segundo e o terceiro parâmetros são opcionais e podem ser usados ​​se você quiser personalizar como serão codificados (por exemplo, o separador e o recuo).

Vamos tentar simplificar nosso exemplo acima.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

console.log(str);

Isso dará a saída {"name":"Abhishek","roll_number":"123","age":18}.

Se usarmos os parâmetros opcionais, substituímos JSON.stringify(student1) com JSON.stringify(student1, null, 2), obteremos algo assim:

{
  "name": "Abhishek",
  "roll_number": "123",
  "age": 18
}

Você pode usá-los para imprimir JSON em um formato legível. Agora vamos tentar mais um exemplo.

Aqui estaremos usando métodos de objeto. Métodos de objeto são funções dentro de um objeto que podem ser chamadas com esse objeto, usando os métodos em nosso exemplo acima:

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
  this.print = function() {
    console.log(this.name, this.roll_number, this.age);
  }
}

var student1 = new Student("Abhishek", "123", 18);

student1.print();

Isso dará a mesma saída do primeiro exemplo, ou seja, Abhishek 123 18.

Os métodos de objeto podem ser usados ​​para executar funções associadas a um objeto e usar as propriedades do objeto. Vamos tentar restringir este objeto.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
  this.print = function() {
    console.log(this.name, this.roll_number, this.age);
  }
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

console.log(str);

Ele ainda fornecerá a mesma saída,{"name":"Abhishek","roll_number":"123","age":18}.

Assim, os métodos do objeto são ignorados pela função stringify. Se você deseja que eles sejam transmitidos também, primeiro é necessário convertê-los em uma string.

Por exemplo, você pode ligar para student1.print = student1.print.toString() e então restringir. Então você obteria algo assim:

{"name":"Abhishek","roll_number":"123","age":18,"print":"function() {n    console.log(this.name, this.roll_number, this.age);n  }"}

Vamos considerar outro objeto:

var obj = {};

obj.key1 = "value1";
obj.key2 = obj;

var str = JSON.stringify(obj);

console.log(obj);

Isso gerará um erro dizendo Uncaught TypeError: Converting circular structure to JSON.

Isso acontece porque key2 está se referindo a obj. Esses objetos são conhecidos como objetos circulares e não podem ser convertidos em uma string JSON.

É aqui que o segundo parâmetro se torna útil. Embora eu não demonstre como funciona aqui, você pode encontrar a solução em isto Página MDN.

É assim que você codifica JSON. Agora vamos ver como analisar uma string JSON.

Análise JSON

Assim como o JavaScript tem uma função para stringificar JSON, também temos uma função para analisar esse JSON stringificado. Este é o protótipo da função:

JSON.parse(text[, reviver])

Aqui, o primeiro parâmetro é a string JSON que precisa ser analisada. O segundo parâmetro é opcional e pode ser uma função para modificar o JSON analisado antes de retornar. Vamos demonstrar esse método usando um exemplo.

function Student(name, roll_number, age) {
  this.name = name;
  this.roll_number = roll_number;
  this.age = age;
}

var student1 = new Student("Abhishek", "123", 18);

var str = JSON.stringify(student1);

var parsedJSON = JSON.parse(str);

console.log(parsedJSON,name. parsedJSON.roll_number, parsedJSON.age);

E a saída será Abhishek 123 18, então a string JSON foi analisada com sucesso.

Você pode usar isso para enviar dados do cliente para o servidor. Os dados a serem enviados podem ser codificados em JSON no cliente e o JSON stringificado será analisado no servidor e processado. Isso torna tudo muito fácil.

JSON também pode ser usado para transmitir dados entre diferentes programas escritos em diferentes linguagens. Todas as linguagens têm bibliotecas para sequenciar e analisar JSON.

JSON x XML

XML ou eXtensível Markup euanguage é uma forma muito popular de armazenar e transmitir dados, semelhante ao JSON. Existia antes do JSON e ainda é amplamente usado hoje.

Por exemplo, é usado em feeds RSS, que ainda são a forma mais popular de se inscrever em alguma publicação ou autor. Também existem sitemaps XML, que são uma lista de todas as páginas de um site. E os mecanismos de pesquisa os usam para ver se há novas páginas a serem rastreadas.

XML usa formato de marcação – semelhante ao HTML, mas muito mais rígido.

JSON e XML têm várias semelhanças e diferenças, conforme explicado nos seguintes pontos:

  • Ambos são legíveis por humanos
  • Ambos possuem uma estrutura hierárquica
  • Ambos são amplamente suportados em várias linguagens de programação
  • Ambos podem ser obtidos do servidor por meio de solicitações HTTP
  • JSON é mais curto que XML
  • JSON pode usar matrizes
  • JSON pode ser analisado usando funções JavaScript padrão, enquanto XML precisa ser analisado usando XML DOM (que é mais lento)

Os mesmos dados podem ser expressos em JSON e XML da seguinte forma:

JSON:

{"employees":[
  { "firstName":"Quincy", "lastName":"Larson" },
  { "firstName":"Abigail", "lastName":"Rennemeyer" },
  { "firstName":"Abhishek", "lastName":"Chaudhary" }
]}

XML:

<employees>
  <employee>
    <firstName>Quincy</firstName> <lastName>Larson</lastName>
  </employee>
  <employee>
    <firstName>Abigail</firstName> <lastName>Rennemeyer</lastName>
  </employee>
  <employee>
    <firstName>Abhishek</firstName> <lastName>Chaudhary</lastName>
  </employee>
</employees>

JSON é melhor do que XML por muitos motivos, mas isso não significa que devemos abandonar o XML. Ainda assim, JSON se tornará a forma preferida de transmissão de dados no futuro.

JWT – O futuro do JSON

JSON Web Token (JWT) é um padrão aberto que define uma maneira compacta e independente de transmitir informações com segurança entre as partes como um objeto JSON.

Essas informações podem ser verificadas e confiáveis ​​porque são assinadas digitalmente. Os JWTs podem ser assinados usando um segredo (com o algoritmo HMAC) ou um par de chaves pública / privada usando RSA ou ECDSA.

Esses tokens podem ser usados ​​para assinar dados JSON e verificar a identidade do remetente. Uma vez que os dados são assinados, se algum dado foi adulterado, você saberá imediatamente.

Embora não discutamos a implementação completa aqui, podemos entender como ela funciona. Um JSON Web Token consiste em três partes: o cabeçalho, a carga útil e a assinatura.

O cabeçalho consiste no tipo de token e algoritmo usado, a carga útil consiste nos dados e a assinatura é o valor que você obtém ao assinar o cabeçalho e a carga útil juntos.

O token final está na forma de <header>.<payload>.<signature>.

Esses tokens são usados ​​atualmente na autorização e são mais rápidos e compactos do que outros métodos de autorização. Eles podem ser muito úteis no futuro e seu potencial é muito alto.

Conclusão

Neste artigo, vimos a importância do JSON como um meio de transferência de dados entre sistemas completamente diferentes e por que ele é tão conveniente.

JSON é um meio universal e não é apenas específico para JavaScript. JSON já é usado em bancos de dados NoSQL para armazenar dados no formato JSON.

Também comparamos JSON e XML e vimos por que JSON é mais eficiente e rápido do que XML. No futuro, podemos desenvolver maneiras ainda melhores de transmitir dados.

À medida que a Internet está crescendo, a transferência eficiente de dados será a maior prioridade. E JSON atende a essa função muito bem por enquanto.

Você pode tentar coisas novas com JSON e implementar diferentes estruturas de dados – está aberto à inovação e nunca devemos parar de experimentar.

Espero que você tenha gostado do meu artigo. Eu aprendi muito escrevendo isso, e sua apreciação me motiva todos os dias, visite minha casa na internet theabbie.github.io.



Fonte

Apaixonado por tecnologia e inovação, traz notícias do seguimento que atua com paixão a mais de 15 anos.

Comments (0)
Add Comment