JSON e Objeto JavaScript são a mesma coisa?

(Last Updated On: 4 de Março de 2016)

Já criou algum objeto próprio em Javascript? Tipo:

{
     nome: 'Ananias',
     idade: 20,
     endereco: {
         rua: "Vergueiro",
         cidade: "São Paulo"
     },
     telefones: ["91234-5678", '98765-4321'],
     "calcula-ano-nascimento": function(){
         //obtem ano atual
         var anoAtual = new Date().getFullYear();
         return anoAtual - this.idade; 
     }
}

O objeto anterior tem várias propriedades: nome é uma string, idade é um number, endereco é um outro objeto com suas propriedades, telefones é um array e calcula-ano-nascimento é uma function. Tudo bonito!

Mas esse objeto é um JSON?

A sigla JSON significa JavaScript Object Notation ou Notação de Objetos JavaScript, em inglês. Pelo nome da coisa, parece que sim…

Parece mas não é. Um JSON é um formato de transferência de dados muito usado em chamadas AJAX entre o navegador e um servidor. Você está interessado nos dados, apenas nos dados…

Um JSON tem algumas restrições:

  • não pode ter funções
  • não pode ter comentários
  • todo texto sempre tem aspas duplas
  • as propriedades sempre tem aspas duplas

Aquele objeto é um JSON? Não, porque viola alguma dessas restrições. Estamos interessados só em dados, afinal de contas. Teríamos que tirar a function, os comentários e colocar aspas duplas.

O JSON baseado naquele objeto seria:

{
    "nome":"Ananias",
    "idade":20,
    "endereco": {
        "rua":"Vergueiro",
        "cidade":"São Paulo"
    },
    "telefones": ["91234-5678", "98765-4321"]
}

Portanto, um JSON é mais restrito que um objeto JavaScript.

Interessante, não? Aprofunde seus conhecimentos com nossos cursos Javascript do Alura. Se prefere cursos presenciais, conheça a Formação Front-End da Caelum.

FIQUE POR DENTRO

  • Excelente! Eu achava que tudo era a mesma coisa. Obrigado por esclarecer isso.

  • Daniel

    Muito interessante, não tinha pensado nas restrições.
    Conversei sobre esse tema esses dias com meu chefe!
    Então, podemos dizer o seguinte:
    Um Json pode vir a ser um objeto Javascript, mas um objeto Javascript nem sempre poderá ser um Json.
    É isso mesmo!?

  • GUSTAVO RIPOSATI

    Muito bom valeu!!

  • Deusmar

    Muito bom! valeu!

Próximo ArtigoPequenos ajustes, grandes mudanças!