ForHosting KIT · Dados e planilhas

Converta chaves com pontos em JSON aninhado

Reconstrua um registro aninhado a partir de nomes planos com pontos: user.contact.email volta para dentro de contact, dentro de user, enquanto active e a pontuação de 42 ficam no nível de cima. No exemplo, 5 entradas planas são processadas. Grátis no seu navegador.

  • Grátis
  • Funciona no seu navegador
  • Sem cadastro
  • Seus dados não saem do seu aparelho
Use pelo WebAPIE-mailTelegramApp em breve

Roda direto no seu navegador. Grátis, sem cadastro — seus dados não são enviados para lugar nenhum.

Esta ferramenta determinística expande cada chave separada por pontos, preserva strings, números, booleanos, valores nulos, arrays e objetos e informa caminhos ambíguos em vez de sobrescrever dados silenciosamente. Ela é útil quando variáveis de ambiente, exportações de formulários, configurações, ferramentas de análise ou consultas de banco de dados geram registros planos que precisam ser restaurados antes da validação ou do processamento.

Converta caminhos com pontos em um documento aninhado

Cada nome de propriedade é interpretado como um caminho cujos segmentos são separados por pontos. Por exemplo, account.profile.name vira a propriedade name dentro de profile, que está dentro de account. Uma chave sem ponto permanece no nível superior.

Os valores não são convertidos: um número continua sendo número, false permanece booleano, null continua nulo e os arrays mantêm ordem e conteúdo. O resultado contém o documento reconstruído em json e uma contagem keys que mostra quantas propriedades planas foram processadas. Segmentos que parecem números são tratados como chaves normais de objeto, e não como índices de array; assim, a transformação não inventa uma coleção que a entrada não declarou.

O processo é determinístico, não usa rede e não depende de localidade, horário ou efeitos da ordem de inserção.

Detecte caminhos conflitantes antes de perder dados

A reconstrução se torna perigosa quando uma chave afirma que um caminho é um valor final e outra exige que o mesmo caminho seja um objeto. A capacidade rejeita essa entrada com um erro de entrada inválida, em vez de escolher a propriedade visitada por último. Ela também rejeita colisões dentro de objetos explícitos.

Objetos explícitos podem receber descendentes com pontos quando as propriedades existentes não entram em conflito; portanto, settings definido como objeto pode coexistir com settings.theme como novo membro. Chaves vazias, pontos iniciais ou finais e pontos duplos são recusados porque criam segmentos sem nome. Os nomes especiais __proto__, prototype e constructor também são bloqueados em todos os níveis, inclusive em objetos fornecidos, evitando surpresas relacionadas a protótipos.

Essas verificações tornam as falhas visíveis e garantem que cada posição de uma saída válida tenha uma única origem inequívoca.

Quanto custa?

Você também pode executar a transformação no navegador nesta página.

Segmentos numéricos viram arrays?

Não. Cada segmento é preservado como chave de objeto, evitando suposições sobre índices ou identificadores.

Os tipos dos valores são preservados?

Sim. Strings, números finitos, booleanos, null, arrays e objetos são copiados sem conversão de tipo.

Uma chave pode conter um segmento vazio?

Não. Chaves vazias, pontos duplos e pontos iniciais ou finais são rejeitados por criarem caminhos ambíguos.

O que acontece se dois nomes entram em conflito, como user e user.name?

A entrada é recusada com um erro claro em vez de ficar com o nome que apareceu por último. Um mesmo lugar não pode ser ao mesmo tempo um valor final e um grupo, então cada posição de um resultado correto tem uma única origem.

Os tipos dos valores são mantidos?

Sim, nada é convertido por conta própria: um número continua número, falso continua falso, um valor nulo continua nulo e as listas mantêm a ordem e o conteúdo. Um texto que tem pontos também não é dividido.

Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.

POSThttps://api.kit.forhosting.com/data/unflatten-to-json

Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.

curl -X POST https://api.kit.forhosting.com/data/unflatten-to-json \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"flat":{"user.name":"Ada","user.contact.email":"ada@example.com","active":true}}'
{
  "flat": {
    "user.name": "Ada",
    "user.contact.email": "ada@example.com",
    "active": true
  }
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "data.unflatten_to_json",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.

por chamadaUS$ 0,002

Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.

max_mb25
HTTPCódigoO que significa
401unauthorizedToken ausente ou inválido. Confira o header Authorization.
402insufficient_balanceSaldo insuficiente para esta tarefa. Faça uma recarga e tente de novo.
404unknown_typeEsse tipo de tarefa não existe. Confira o campo type no catálogo.
429rate_limitedMuitas requisições em pouco tempo. Espere um instante e tente de novo.

Converta um objeto JSON plano, como {"account.name":"Ada"}, na estrutura aninhada que sua aplicação realmente espera.

Converta caminhos com pontos em um documento JSON comum

Forneça um objeto JSON no campo flat. Isso mantém a saída estável para configurações, aliases de banco de dados e formulários. Use valores JSON válidos e coloque os nomes das propriedades entre aspas.

Detecte caminhos conflitantes antes de perder dados

Uma entrada com user como string e user.name como outro valor não consegue representar os dois fatos em uma única estrutura JSON.

Use o resultado em migrações e pipelines de aplicações

Chaves planas aparecem com frequência nas fronteiras entre sistemas. Em lotes, chame a capacidade uma vez por registro plano, pois a unidade de cobrança é um item e cada resposta descreve exatamente um documento reconstruído. Pontos em valores de texto são seguros; somente nomes de propriedades viram caminhos. Consultas SQL costumam produzir aliases como customer.address.city; plataformas de logs e análise achatam eventos aninhados para indexação; formulários HTML codificam controles agrupados com nomes pontuados; e sistemas de implantação representam configurações estruturadas como variáveis separadas. Coloque esta conversão logo após ler o formato de fronteira e antes de aplicar um esquema JSON aninhado. Assim, uma falha de validação aponta para o registro de origem, em vez de deixar uma estrutura incompleta avançar pelo pipeline. O executor no navegador é prático para inspecionar um registro sem programar, enquanto a API começa em US$ 0,002 para automação. Como os valores são copiados sem interpretar strings ou inferir tipos, analise antes as strings que contenham JSON intencionalmente.

Restaure aliases de consultas

Transforme colunas como customer.name e customer.address.city no objeto customer aninhado esperado por uma API.

Prepare configurações para validação

Reconstrua ajustes aninhados a partir de chaves planas antes de aplicar um esquema JSON ou valores padrão.

Normalize formulários e eventos

Converta nomes pontuados de formulários, logs ou exportações analíticas em JSON comum para processamento posterior.

O que ocorre quando uma chave é prefixo de outra?

Se o prefixo contiver um valor que não seja objeto, a solicitação falhará com invalid_input porque os dois caminhos não podem coexistir.

Ver a documentação completa do KIT →