9 pontos por GN⁺ 2024-12-09 | 2 comentários | Compartilhar no WhatsApp
  • JSON5 é um formato que estende o formato de arquivo JSON para facilitar a escrita e a manutenção por pessoas
    • Não é usado para comunicação entre máquinas
    • Iniciado em 2012, em 2022 ultrapassou 65 milhões de downloads por semana e está entre os 0,1% pacotes mais dependidos no npm
    • Adotado por grandes projetos como Chromium, Next.js, Babel, Retool e WebStorm
    • Compatível nativamente com plataformas Apple como macOS e iOS
  • Características do JSON5
    • É um superconjunto de JSON e inclui parte da sintaxe do ECMAScript 5.1
    • Arquivos JSON5 são sempre arquivos ES5 válidos
  • Recursos estendidos do ECMAScript 5.1
    • Objetos
      • Chaves de objeto podem ser IdentifierName do ECMAScript 5.1
      • Permite uma única vírgula à direita em objetos
    • Arrays
      • Permite uma única vírgula à direita em arrays
    • Strings
      • Strings podem ser envolvidas por aspas simples
      • Podem se estender por várias linhas com escape de quebra de linha
      • Podem incluir escapes de caracteres
    • Números
      • Podem ser representados em hexadecimal
      • Podem ter ponto decimal inicial ou final
      • Podem incluir infinito positivo, infinito negativo e NaN do IEEE 754
      • Podem começar com sinal de mais explícito
    • Comentários
      • Permite comentários de uma linha e de múltiplas linhas
    • Espaços em branco
      • Permite caracteres adicionais de espaço em branco
  • API
    • JSON5.parse(): analisa uma string JSON5 e cria um valor ou objeto JavaScript
    • JSON5.stringify(): converte um valor JavaScript em uma string JSON5
  • CLI
    • Fornece uma CLI para converter JSON5 em JSON ou validar a sintaxe de documentos JSON5
  • Compatibilidade com ECMAScript
    • JSON5 foi projetado para ser totalmente compatível com ES5, mas os caracteres U+2028 e U+2029 não são permitidos no ES5
    • No ES2019 esses caracteres passaram a ser permitidos, tornando JSON e JSON5 totalmente compatíveis com ES2019
  • Licença
    • Disponível sob a licença MIT.

2 comentários

 
GN⁺ 2024-12-09
Comentários do Hacker News
  • JSON oferece suporte apenas a strings com aspas duplas, o que tem a característica de eliminar discussões sobre o uso de aspas. É possível usar JSONC para adicionar comentários e vírgulas à direita
    • JSONC é usado como formato de configuração no Visual Studio Code
  • Acho que o nome JSON5 é antiético. Se não houver aprovação do autor original, é inadequado sugerir que seja como se fosse a próxima versão
  • Prefiro JSON5 e acho que o YAML tem baixa legibilidade. Costumo usar ferramentas de conversão para JSON para entender arquivos YAML
  • JSON é amplamente usado por ser simples. Acho que alternativas complexas como XML ou YML não são adequadas
    • Usar formatos complexos pode causar problemas
  • É uma pena que o EDN não tenha sido muito adotado fora do ecossistema Clojure
    • Não há um padrão, mas os usuários o utilizam sem problemas
  • Aponta-se o problema dos caracteres especiais no JSON. JSON é definido em UTF-8, mas há um erro que descreve incorretamente caracteres de controle ASCII de 7 bits
    • O RFC deveria incluir 33 caracteres de controle
  • Recomenda-se TOML, considerado a combinação perfeita entre legibilidade humana e suporte de ferramentas
  • Não se considera uma boa ideia oferecer mais tipos em alternativas a JSON/YAML
    • NestedText é quase ideal, mas usa várias sintaxes e não inclui comentários no modelo de dados
  • Aponta-se que o JSON5 não introduziu uma sequência de escape \U para caracteres Unicode fora do BMP
    • Ter que usar pares substitutos UTF-16 é incômodo e não está de acordo com o padrão Unicode
  • Acho que no JSON não são necessários outros recursos além de comentários e um tipo nativo de datetime
    • Vírgulas à direita também são consideradas úteis