pgdas-json-parser
v1.1.1
Published
Este projeto é um **parser** que converte arquivos no formato PGDAS para um JSON aninhado, utilizando um esquema de anotação definido em YAML ou JSON. O objetivo é facilitar a interpretação e manipulação de dados fiscais em sistemas automatizados.
Downloads
21
Readme
PGDAS-JSON Parser
Este projeto é um parser que converte arquivos no formato PGDAS para um JSON aninhado, utilizando um esquema de anotação definido em YAML ou JSON. O objetivo é facilitar a interpretação e manipulação de dados fiscais em sistemas automatizados.
Funcionalidades
- Conversão Hierárquica: Converte registros e sub-registros do PGDAS em uma estrutura JSON aninhada.
- Esquema Flexível: Suporta esquemas de anotação definidos em YAML ou JSON para descrever a estrutura dos dados a serem convertidos.
- Personalização: Permite adaptar o parser a diferentes layouts de arquivos fiscais através de esquemas customizados.
Como Funciona
Estrutura do Esquema (YAML/JSON)
O parser utiliza um esquema para entender como cada registro no arquivo PGDAS deve ser interpretado e onde ele deve ser aninhado na estrutura JSON final.
Exemplo de Esquema em YAML
00000:
name: "AberturaArquivo"
values:
- "dataAbertura"
- "cnpj"
children:
00001:
name: "ProcessoNaoOptante"
values:
- "numeroProcesso"
- "indicadorTipoProcesso"
- "numeroDocumento"
- "dataInicio"
- "dataFim"
01100:
name: "RegistroDePerfil"
values:
- "perfil"
- "descricao"
- "indicadorAtividade"
- "indicadorApropriacao"
- "dataInicio"
- "dataFim"
Exemplo de Esquema em JSON
Se preferir usar JSON ao invés de YAML:
{
"00000": {
"name": "AberturaArquivo",
"values": ["dataAbertura", "cnpj"],
"children": {
"00001": {
"name": "ProcessoNaoOptante",
"values": ["numeroProcesso", "indicadorTipoProcesso", "numeroDocumento", "dataInicio", "dataFim"]
},
"01100": {
"name": "RegistroDePerfil",
"values": ["perfil", "descricao", "indicadorAtividade", "indicadorApropriacao", "dataInicio", "dataFim"]
}
}
}
}
Como Usar
Passo 1: Preparação do Esquema
- YAML: Crie um arquivo
schema.yaml
seguindo a estrutura demonstrada acima. - JSON: Crie um arquivo
schema.json
com a estrutura desejada.
Passo 2: Parse do Arquivo
Após definir o esquema, você pode usar o parser para converter um arquivo PGDAS para JSON.
const lines = text.split("\n"); // Divida o arquivo PGDAS em linhas
const parser = new Parser(schema, lines); // Crie uma nova instância do Parser, passando o esquema e as linhas
const response = parser.render(); // Renderize o JSON final
console.dir(response, { depth: 12 }); // Exiba o JSON gerado com uma profundidade de 12 níveis
Estrutura do Parser
Parser(schema, lines)
: Inicializa o parser com o esquema (YAML ou JSON) e as linhas do arquivo PGDAS.parser.render()
: Converte o arquivo PGDAS em um JSON aninhado conforme o esquema fornecido.
Exemplos de Uso
Exemplo 1: Parsing Simples
const text = `
00000|2023-01-01|12345678000195
00001|12345|1|12345678|2023-01-01|2023-12-31
01100|1|Perfil Teste|1|0|2023-01-01|2023-12-31
`;
const schema = { /* O conteúdo do schema.yaml ou schema.json */ };
const lines = text.trim().split("\n");
const parser = new Parser(schema, lines);
const response = parser.render();
console.dir(response, { depth: 12 });
Saída Esperada:
{
"AberturaArquivo": {
"dataAbertura": "2023-01-01",
"cnpj": "12345678000195",
"ProcessoNaoOptante": {
"numeroProcesso": "12345",
"indicadorTipoProcesso": "1",
"numeroDocumento": "12345678",
"dataInicio": "2023-01-01",
"dataFim": "2023-12-31"
},
"RegistroDePerfil": {
"perfil": "1",
"descricao": "Perfil Teste",
"indicadorAtividade": "1",
"indicadorApropriacao": "0",
"dataInicio": "2023-01-01",
"dataFim": "2023-12-31"
}
}
}