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.
Exemplos de objetos válidos:
{}
{“alfa”: 1}
{“alfa”: 1, “beta”: 2, “gama”: “três”, “delta”: {}}
Array (ou Lista)
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:
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.
Número
Os números seguem as mesmas regras dos inteiros e floats do C, em geral. Não tem muito segredo.
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.