Regra Universal de Tipagem dos Campos
A API Equals Connect segue uma regra consistente e universal para definir o tipo de qualquer campo no JSON retornado.
A Regra (Vale para TODOS os Campos)
| Se o valor... | Tipo no JSON | Exemplo |
|---|---|---|
| Contém apenas números E não começa com zero | Number (sem aspas) | 1584494, 20260330, 178.57 |
| Contém letras OU começa com zero | String (com aspas) | "038589", "A1", "094822", "LOJA" |
IMPORTANTE: Esta regra se aplica a QUALQUER CAMPO da API. Não existe uma lista fixa de campos que são sempre Number ou sempre String. O valor determina o tipo.
Exemplos Reais - Mesmo Campo, Tipos Diferentes
AUTORIZACAO
| Valor | Tipo | Motivo |
|---|---|---|
1584494 | Number | Apenas números, não começa com zero |
"038589" | String | Começa com zero |
"ABC123" | String | Contém letras |
HRVENDA
| Valor | Tipo | Motivo |
|---|---|---|
"094822" | String | Começa com zero (09:48:22) |
135147 | Number | Apenas números, não começa com zero (13:51:47) |
91625 | Number | Apenas números, não começa com zero (09:16:25 vira 91625 se for Number) |
CONTA / AGENCIA
| Valor | Tipo | Motivo |
|---|---|---|
"0000012345" | String | Começa com zero |
123456 | Number | Apenas números, não começa com zero |
Como Lidar - Abordagem Universal
Abordagem Errada (Assumir Tipo Fixo)
// ERRADO - Pode quebrar se o valor for Number
const hora = registro.HRVENDA;
const formatada = hora.padStart(6, '0'); // Erro se for Number!
Abordagem Correta (Tratar como String Sempre)
/**
* Converte qualquer valor para string (preserva zeros à esquerda)
*/
function asString(value) {
if (value === null || value === undefined) return '';
return String(value);
}
/**
* Converte hora (number ou string) para formato HH:MM:SS
*/
function formatHora(value) {
if (!value && value !== 0) return null;
const str = String(value).padStart(6, '0');
return `${str.slice(0,2)}:${str.slice(2,4)}:${str.slice(4,6)}`;
}
Regra de Ouro para Integração
"NUNCA assuma o tipo de um campo. SEMPRE converta para string antes de processar identificadores, códigos ou valores que possam começar com zero."
Checklist para Desenvolvimento Seguro:
- Use
String(valor)para todos os campos que são identificadores. - Use
String(valor).padStart(6, '0')para campos de hora. - NÃO use
Number(valor)em campos que podem começar com zero. - Teste sua integração com horários antes e depois das 10:00 da manhã.
Por que isso acontece?
É o comportamento natural do serializador JSON do backend. Quando o sistema gera o JSON, se um campo (como HRVENDA ou AUTORIZACAO) contém um valor que o parser entende como número puro (ex: 135147), ele é enviado sem aspas. Se o valor contém um zero à esquerda (ex: 094822), o sistema o trata como String para garantir que o zero não seja perdido.
Isso NÃO é uma inconsistência. É o comportamento padrão para preservar a integridade dos dados.
Este conteúdo foi útil para você?