Boa noite,
Eu uso muito o json por conta do javascript e muitas vezes preciso ler os dados então pra ficar mais legível modifiquei a função json.cod()
Quem quiser aprimorar fique a vontade
funcao json.codvisual(obj, as_key)
local s = {} // We'll build the string as an array of strings to be concatenated.
local kind = kind_of(obj) // This is 'array' if it's an array or type(obj) otherwise.
n = 0
t = 0
se kind == 'array' entao
se as_key entao retorne falso, ('Não é possível codificar uma matriz como uma chave.') fim
// n = n + 1
s[#s + 1] = '[\n'
para i, val em ipares(obj) inicio
t = t + 1
se i > 1 entao s[#s + 1] = ', \n' fim
s[#s + 1] = json.codvisual(val)
fim
s[#s + 1] = '\n]'
senaose kind == 'tabela' entao
se as_key entao retorne falso, ('Não é possível codificar tabela como uma chave.') fim
s[#s + 1] = '{\n'
para k, v em pares(obj) inicio
se #s > 1 entao s[#s + 1] = ', \n' fim
s[#s + 1] = json.codvisual(k, verdadeiro)
s[#s + 1] = ' :'
s[#s + 1] = json.codvisual(v)
fim
s[#s + 1] = '\n}'
senaose kind == 'string' entao
retorne ' "' .. escape_str(obj) .. '"'
senaose kind == 'numero' entao
se as_key entao retorne '"' .. convstring(obj) .. '"' fim
retorne convstring(obj)
senaose kind == 'boolean' entao
retorne convstring(obj)
senaose kind == 'nulo' entao
retorne 'null'
senao
retorne falso, ('Tipo não compatível com json: ' .. kind .. '.')
fim
retorne tabela.concat(s)
fim
saída:
[
{
"ifname" : "ppp1",
"username" : "fulano",
"state" : "active",
"rate-limit" : "10000\/1000",
"called-sid" : "rede1",
"uptime" : "00:01:06",
"tx-bytes-raw" : "1012526",
"rx-bytes-raw" : "170130",
"ip" : "10.10.10.1",
"calling-sid" : "BB:RR:AA:SS:II:LL"
},
{
"ifname" : "ppp2",
"username" : "ciclano",
"state" : "active",
"rate-limit" : "10000\/1000",
"called-sid" : "rede1.2",
"uptime" : "00:00:55",
"tx-bytes-raw" : "2526",
"rx-bytes-raw" : "1130",
"ip" : "10.10.10.1",
"calling-sid" : "BR:AS:IL:BR:AS:IL"
}
]
Muito bom, bem mais organizada a saída gerada.