Skip to content
Latchkey

O Que É JSON? JavaScript Object Notation Explicado

JSON (JavaScript Object Notation) é um formato leve baseado em texto para representar dados estruturados como objetos chave-valor e arrays ordenados.

JSON é a língua franca da web moderna e das ferramentas de CI. É uma forma simples e legível por humanos de anotar dados estruturados - objetos com campos nomeados e listas de valores - que quase toda linguagem de programação consegue ler e escrever. Se uma CLI emite saída legível por máquina ou uma API retorna um payload, é muito frequentemente JSON.

O que JSON é

JSON representa dados usando duas estruturas: objetos, que são conjuntos não ordenados de pares chave-valor envolvidos em chaves, e arrays, que são listas ordenadas envolvidas em colchetes. Os valores podem ser strings, números, booleanos, null, objetos ou arrays. As chaves são sempre strings entre aspas duplas. Essa gramática minúscula é suficiente para modelar quase qualquer dado.

As regras que confundem as pessoas

JSON é estrito de algumas formas: chaves e valores string devem usar aspas duplas (nunca simples), não há vírgulas ao final e não há comentários. Essas restrições tornam o JSON fácil de parsear para máquinas, mas significam que arquivos JSON editados à mão quebram com mais frequência do que você esperaria por uma aspa faltando ou uma vírgula perdida.

JSON versus YAML

YAML é um superset estrito de JSON, então qualquer JSON válido é YAML válido. JSON é mais verboso e orientado a máquina, enquanto YAML é mais amigável para humanos escreverem config à mão. Muitas ferramentas aceitam qualquer um: dados são frequentemente trocados como JSON pela rede, mas configurados em YAML em disco.

JSON em pipelines de CI

Workflows de CI dependem de JSON constantemente. Uma matrix do GitHub Actions pode ser construída a partir de uma string JSON, o payload de evento do GitHub é JSON, e a maioria das CLIs oferece um modo de saída JSON para você canalizar resultados para o jq. Lockfiles como package-lock.json são JSON, e muitas ferramentas armazenam config em um campo do package.json.

Driving a matrix with JSON
# Build a matrix from a JSON array in GitHub Actions
jobs:
  test:
    strategy:
      matrix:
        node: ${{ fromJSON('["18","20","22"]') }}
    runs-on: ubuntu-latest
    steps:
      - run: node --version

Nota da Latchkey

Os runners da Latchkey são runners padrão do GitHub Actions, então matrices orientadas por JSON, expressões fromJSON e o parsing de saída de CLI com jq funcionam exatamente como nos runners GitHub-hosted - não há nada especial para configurar.

Principais conclusões

  • JSON é um formato de texto construído a partir de objetos (pares chave-valor) e arrays (listas ordenadas).
  • É estrito: chaves entre aspas duplas, sem vírgulas ao final e sem comentários.
  • CI usa JSON em todo lugar - payloads de evento, definições de matrix, lockfiles e saída de CLI legível por máquina.

Guias relacionados