
_Créditos das imagens: ChatGPT_
# Suporte a JSON5 em AdvPL/TLPP
[JSON5](https://json5.org/) é 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:***
```JSON
{
// 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:***
```JSON
{
// 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:***
```JSON
{
"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:***
```JSON
{
// 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
Postar um comentário