JSON vs Objeto JavaScript – Qual a diferença?

Olá, Web Developers!

Há algum tempo eu escrevi um post onde eu chamei um objeto de JSON, e um leitor me corrigiu. Ele estava completamente certo!

Muitas pessoas (inclusive eu) possuem a mania de chamar qualquer objeto JavaScript de JSON e muitas acreditam que são a mesma coisa. Isso está errado e eu notei que há muitas pessoas perguntando essa diferença, inclusive em grupos do Facebook e no StackOverflow.

Npm - Gerenciador de pacotes para JavaScript
Curso de Npm - Gerenciador de pacotes para JavaScript
CONHEÇA O CURSO

Qual a diferença entre um Objeto Literal e o JSON?

Muitos sabem que o nome JSON vem de “JavaScript Object Notation”. Então, por que objetos JavaScript escritos de forma literal nem sempre são JSON?

{
   "a": 2,
   "b": 3
}

O exemplo acima pode ser considerado tanto um objeto literal em JavaScript quanto um JSON. Acontece que o JSON é um formato usado para a transferência de dados, independente de linguagem de programação, assim como o XML, CSV ou YAML.

Apesar da sintaxe de um objeto literal e do JSON serem muito parecidas (a ponto de podermos usar um JSON como objeto literal), o JSON possui especificações. Se sairmos dessas especificações, não estamos mais falando de um JSON.

Principais Diferenças entre JSON e Objeto Literal JavaScript

Chaves – As chaves no JSON devem vir entre aspas duplas. No Objeto Literal, as chaves podem ser strings com aspas simples, duplas, sem aspas, variáveis ou Symbols.

Valores – O Objeto Literal JavaScript aceita qualquer tipo de dado presente na linguagem (como Date) e até funções.

O JSON só aceita os seguintes tipos de valor:

  • string
  • number
  • boolean
  • null
  • array
  • outro JSON

Por essas limitações que o MongoDB usa o chamado BSON ao invés do JSON para armazenar dados. Além de armazenar o JSON em um formato binário, também adiciona suporte a outros tipos de dados, como:

  • integer
  • double
  • date
  • byte array
  • objeto BSON
  • array BSON
  • código JavaScript
  • dados binários em MD5
  • expressões regulares

Finalizando

Então, quando estamos transferindo dados, estamos falando de JSON, um formato de transferência de dados. Quando o JSON é interpretado por uma linguagem de programação, ele é convertido para um objeto (pode ser C#, Ruby(hash), Python(dictionary), Java, etc). Mesmo que no JavaScript a sintaxe de um objeto literal seja igual, ele não é um JSON.

React Native - Armazenamento e Sincronia Offline
Curso de React Native - Armazenamento e Sincronia Offline
CONHEÇA O CURSO
Deixe seu comentário

Graduado em Análise e Desenvolvimento de Sistemas, Pós-graduado em Projetos e Desenvolvimento de Aplicações Web e MBA em Machine Learning. Especializado em Front End e curte desenvolvimento de jogos.