Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: 🚀 **Depurando Blocos de Código (xBase)** 🚀

🚀 **Depurando Blocos de Código (xBase)** 🚀 Interessante a abordagem de **Blocos de Código** no **Harbour**! Eles funcionam literalmente como "cidadãos de primeira classe", permitindo até mesmo depuração passo a passo. 🔍 **Exemplo Prático:** ```xBase Eval( {|aFunTst as array| LOCAL lValid AS LOGICAL LOCAL i AS NUMERIC FOR i := 1 TO Len(aFunTst) // Verifica resultado esperado lValid := aFunTst[i][3] IF lValid SetColor("g+/n") QOut("(" + aFunTst[i][2] + "): passed") SetColor("") ELSE SetColor("r+/n") QOut("(" + aFunTst[i][2] + "): failed") SetColor("") ENDIF NEXT i RETURN NIL }, aFunTst ) ``` 🤔 **Pergunta aos escovadores de bit de plantão:** É pos...

BlackTDN :: DNATech :: Suporte a JSON5 em AdvPL/TLPP

Créditos das imagens: ChatGPT

Suporte a JSON5 em AdvPL/TLPP

JSON5 é uma extensão do popular formato de arquivo JSON que tem como objetivo ser mais fácil de escrever e manter manualmente (por exemplo, para arquivos de configuração). Ele não foi projetado para comunicação entre máquinas. (Continue usando JSON ou outros formatos de arquivo para isso. 🙂)

O JSON5 foi iniciado em 2012 e, a partir de 2022, recebe mais de 65 milhões de downloads por semana, está entre os 0,1% dos pacotes mais utilizados no npm e foi adotado por grandes projetos como Chromium, Next.js, Babel, Retool, WebStorm e outros. Também possui suporte nativo em plataformas da Apple, como macOS e iOS.

Formalmente, o formato de Intercâmbio de Dados JSON5 é um superconjunto do JSON (ou seja, arquivos JSON válidos sempre serão arquivos JSON5 válidos) que expande sua sintaxe para incluir algumas produções do ECMAScript 5.1 (ES5). Além disso, ele é um subconjunto do ES5, o que significa que arquivos JSON5 válidos sempre serão válidos em ES5.*

Esta biblioteca AdvPL/TLPP é uma implementação de referência para análise e serialização de JSON5.


Exemplos

Exemplo 1:

{
  // comments
  unquoted: 'and you can quote me on that',
  singleQuotes: 'I can use "double quotes" here',
  lineBreaks: "Look, Mom! \
No \\n's!",
  hexadecimal: 0xdecaf,
  leadingDecimalPoint: .8675309, andTrailing: 8675309.,
  positiveSign: +1,
  trailingComma: 'in objects', andIn: ['arrays',],
  "backwardsCompatible": "with JSON",
}

Exemplo 2:

{
  // Comments are allowed
  name: 'John Doe', // No need for quotes around keys
  age: +30, // Trailing commas are allowed
  isStudent: false,
  hobbies: [
    "reading",
    "gaming",
    "coding", // Trailing comma in arrays
  ],
}

Exemplo 3:

{
    "Services": [
        {
            cExeName: "apache.exe",
            cName: "apache_wf.service",
            cDislpayName: ".apache_wf",
            cTmpDir: "\\tmp\\apache\\service\\",
            nNumber: +10
        },
        {
            'cExeName': "apache.exe",
            'cName': "apache_wsrest.service",
            'cDislpayName': ".apache_wsrest",
            'cTmpDir': "\\tmp\\apache\\service\\"
        },
        {
            "cExeName": 'apache.exe',
            "cName": 'apache_wssoap.service',
            "cDislpayName": '.apache_wssoap',
            "cTmpDir": '\\tmp\\apache\\service\\'
        },
        {
            "cExeName": "apache.exe",
            "cName": "apache.service",
            "cDislpayName": ".apache",
            "cTmpDir": "\\tmp\\apache\\service\\"
        },
        {
            "cExeName": "apache.exe",
            "cName": "apache_exclusivo.service",
            "cDislpayName": ".apache_exclusivo",
            "cTmpDir": "\\tmp\\apache\\service\\"
        }
    ]
}

Exemplo 4:

{
  // Comentário em JSON5
  name: "JSON5 Example", // Chaves não precisam de aspas
  version: 1.0, // Números podem ser escritos diretamente
  isEnabled: true, // Booleanos também são suportados
  features: [
    "comments",
    "trailing commas", // Última vírgula não causa erro
    "unquoted keys",
    "multi-line strings",
    "hexadecimal, octal, binary numbers", // Última vírgula não causa erro
  ],
  settings: {
    theme: "dark",
    fontSize: 14,
    shortcuts: {
      save: "Ctrl+S",
      open: "Ctrl+O",
      close: "Ctrl+W"
    }
  },
  nested: {
    description: "Este é um exemplo de JSON5 com mais detalhes",
    specialChar: "✓",
    metadata: {
      createdBy: "ChatGPT",
      createdAt: "2025-02-01T12:00:00Z",
      tags: ["example", "json5", "rich"]
    }
  },
  numbers: {
    decimal: 255, // Decimal padrão
    hexadecimal: 0xFF, // Hexadecimal
    octal: 0o377, // Octal
    binary: 0b11111111 // Binário
  }
}

Hashtags Relacionadas

#DNATech, #JSON5, #JSON, #TLPP, #AdvPL


DNA Tech : JSONArray :: Suporte a serialização do formato JSON5


TOTVS : JSONObject :: Sem Suporte a serialização do formato JSON5

Comentários

Postagens mais visitadas