O que é JSON?

A sigla JSON significa “Javascript Object Notation”, ou “Notação de Objetos do Javascript”. Trata-se de um formato de serialização de dados, tal qual YAML ou até XML. Seu principal diferencial é que, ao invés de alternativas mais complexas como XML, ele é fácil de ser lido por humanos (tendo a mesma sintaxe do Javascript, basicamente) e também é simples de ser lido por programas de computador (tendo a mesma sintaxe do Javascript, basicamente).

Um formato de serialização é o que permite você transmitir um objeto mais ou menos complexo (como um dicionário cheio de valores ou, meramente, um número inteiro) por um transporte simples e não-tipado (um socket, um pipe ou até um simples arquivo).

A sintaxe do JSON (conforme consta no site http://json.org ) é bem simples:

Objeto

Para os pythonistas, um objeto é como um dicionário. Ou, para quem é do PHP, é como um array cujas chaves são strings.

json object definition

Exemplos de objetos válidos:

{}

{“alfa”: 1}

{“alfa”: 1, “beta”: 2, “gama”: “três”, “delta”: {}}

Array (ou Lista)

json list definition

Exemplos de listas válidas:

[]

[1]

[1,2,3]

[“um”, “dois”, “três”]

[1, “dois”, {“um”: 1}, “três”, 4, [5, 6, “sete”]]

Valor

Como você viu nos exemplos acima, há diversas referências para “valor”. O que é válido para um “valor” é o seguinte:

json value definition

String

Aqui é bem importante observar: as strings sempre devem ser colocadas entre aspas duplas. Uma string em aspas simples gera um erro nos decoders de JSON — porque, de fato, é um erro.

json string definition

Número

Os números seguem as mesmas regras dos inteiros e floats do C, em geral. Não tem muito segredo.

json number definition

Em resumo

Não é à toa que JSON ganhou tanta popularidade, nos últimos anos, como formato de serialização para APIs (como muitas APIs REST, por exemplo) e até para armazenamento de dados (vide o CouchDB e outros, assim como os campos JSON do Postgres). Ele é, de fato, muito simples e, ao mesmo tempo, bem poderoso.

Algumas “desvantagens” conhecidas são a verbosidade do formato (ele pode gerar strings bem longas para dados bem simples) e a falta de um método padronizado de verificar se o formato dos dados está correto (como o XML tem, por exemplo). Mas, claro, como cada caso é um caso, fica a teu critério saber escolher a melhor opção de serialização.


Este artigo foi escrito originalmente em 09/03/2017.