Executando verificação de segurança...
3

JSSON (JavaScript Simplified Object Notation) - V0.0.3

Disclamer:

JSSON é uma linguagem para gerar JSON massivo de forma humana, ou seja, escreva 10 linhas, gere 10.000.

Post anterior sobre o JSSON: [https://www.tabnews.com.br/carlosedujs/jsson-javascript-simplied-object-notation]

Até a presente versão, essas são as FEATURES:

Tipos de Dados

  • Strings: name = João ou name = "João Silva" (com espaços)
  • Números: age = 25, price = 99.99, temperature = -15.5
  • Booleanos: active = true, disabled = false
  • Arrays: colors = [red, blue, green], ports = [8080, 8081]
  • Objetos: user { name = João, age = 25 }

Estruturas

  • Objetos aninhados: Suporte completo a múltiplos níveis
  • Arrays em objetos: config { methods = ["GET", "POST"] }
  • Arrays de objetos: users = [{ name = João }, { name = Maria }]
  • Comentários: // Comentário de linha

Operadores

Aritméticos

  • + Adição
  • - Subtração (incluindo números negativos: -23.5)
  • * Multiplicação
  • / Divisão
  • % Módulo

Comparação

  • == Igual
  • != Diferente
  • > Maior que
  • < Menor que
  • >= Maior ou igual
  • <= Menor ou igual

Lógicos

  • ? : Operador ternário: age >= 18 ? "adult" : "minor"

String

  • + Concatenação: "Hello " + name

Features Avançadas

Templates

Gera arrays de objetos a partir de dados tabulares:

users [
  template { name, age }

  João, 25
  Maria, 30
]

Ranges

Gera sequências automaticamente:

numbers = 1..100          // [1, 2, 3, ..., 100]
ports = 8080..8085        // [8080, 8081, ..., 8085]
ips = "192.168.1.1".."192.168.1.255"  // String ranges!

Map Transformations

Transforma e enriquece dados com lógica:

users [
  template { name, age }

  map (u) = {
    name = u.name
    age = u.age
    isAdult = u.age >= 18
    category = u.age >= 18 ? "adult" : "minor"
    tags = ["user", "active"]  // Arrays em map!
  }

  João, 25
  Maria, 16
]

Include

Modulariza configurações:

include "database.jsson"
include "api-config.jsson"

Casos de Uso Reais

Suportado e Testado (Clique nos exemplos para redirecionar para a documentação)

  1. Geographic Data:

    • Lat/Lon com ranges gigantes:

      • 100 → 10.000 → 1.000.000 pontos
      • cálculo de grade
      • zoneamento
      • types dinâmicos
      • suporte a negativo (-23.5505) funcionando
    • OBJETIVO: Gerar milhões de coordenadas virou uma linha:
      0..999999

  2. Kubernetes Config:

    • Gera deployment, service e configmap SEM repetir 200 linhas de YAML.
      • naming consistente
      • condicional de ambiente
      • replicas automáticas
      • resource limits diferentes
      • environment variables
      • 100% DRY
    • Multi-ambiente com lógica condicional
  3. API Gateway:

    • Regras de roteamento com:

      • CORS
      • rate limiting condicionado
      • upstream autogerado
      • auth JWT vs basic
      • cache por serviço
      • paths dinâmicos
    • Sim, rota de microserviço real.

  4. i18n Translations:

    • Gera arquivos enormes de tradução sem dor:
      • en, pt, es, fr
      • category automática
      • help URL gerada no map
      • metadata (lastUpdated)
    • Aquele JSON chato de tradução?
    • Virou 8 linhas de JSSON.
  5. Feature Flags:

    • Configurações por ambiente
    • A/B testing, rollouts, porcentagens — tudo gerado sem repetir estrutura.
  6. Database Seeding:

    • Dados relacionais

    • Tipo:

      users [
            template { name, age, job }
            João, 19, Student
            Maria, 25, Teacher
      ]
      
    • Isso vira JSON prontinho, validado, bonito.

Performance

  • Geração em massa: 10,000+ registros de 20 linhas de código
  • Ratios: Até 50,000:1 (código JSSON → JSON)
  • Escalabilidade: Suporta milhões de registros

🐛 Bugs Corrigidos (v0.0.3.1)

Números Negativos

  • Antes: -23.5 + x causava erro
  • Agora: Suporte completo a números negativos em expressões
  • Fix: Operador unário MINUS implementado

Limitações Conhecidas

Não Suportado (ainda)

  • ❌ Variáveis declaradas
  • ❌ Funções/macros customizadas
  • ❌ Array methods (filter, map, reduce)
  • ❌ Loops (for, while)
  • ❌ Operadores lógicos (&&, ||, !)

📈 Comparação com JSON

FeatureJSONJSSON
Quotes em keysObrigatórioOpcional
Trailing commasErroNão precisa
ComentáriosNão suporta//
TemplatesNão temSim
RangesNão tem1..100
ExpressõesNão temAritméticas
CondicionaisNão temTernário
IncludesNão temSim

Quando Usar JSSON

Ideal para:

  • Arquivos de configuração com estruturas repetitivas
  • Geração de grandes datasets que seguem padrões
  • Setups multi-ambiente (dev/staging/prod)
  • Infrastructure as Code
  • Geração de dados para testes

Não ideal para:

  • Estruturas JSON únicas e não-repetitivas
  • Dados extremamente dinâmicos (use linguagem de programação)
  • Configs simples e pequenos (JSON puro é suficiente)

Versão Atual: v0.0.3.1

Status: Produção-ready para casos de uso suportados

Próximas features planejadas:

  • Variáveis
  • Funções/macros
  • Array methods
  • Mais operadores lógicos

🤝 Código + Docs + Exemplos reais:

👉 GitHub: [https://github.com/carlosedujs/jsson]
👉 Exemplos reais (geo, k8s, api, i18n, flags, db) estão todos na documentação, acesse [https://jsson-docs.vercel.app/real-world/overview/].


🧨 TL;DR:

Se você escreve JSON repetitivo ou trabalha com DevOps, microserviços, seeds, i18n, geo ou qualquer coisa que depende de dados estruturados…

JSSON v0.0.3.1 te poupa HORAS.
E ainda deixa o código bonito.

Carregando publicação patrocinada...
4

Muito obrigado, não q eu escreva json gigantescos mas seu projeto é muito mais do q eu já sonhei pro json. Por isso q eu prefiro fazer configs no ts mesmo. Vou usar até pra json minúsculo hehehe ❤️

E realmente o código fica muito mais bonito!

E aliás linda tipografia do seu logotipo, tão elegante quanto escrever Jsson ☺️