Converta chiavi con punti in JSON annidato
Ricostruisca un record annidato a partire da nomi piatti con punti: user.contact.email torna dentro contact, a sua volta dentro user, mentre active e il punteggio di 42 restano al primo livello. Nell'esempio vengono elaborate 5 voci piatte. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.
È utile quando variabili d’ambiente, moduli, configurazioni, strumenti analitici o query di database producono record piatti da ripristinare prima della convalida o dell’elaborazione.
Trasformi i percorsi con punti in un documento annidato
Ogni nome di proprietà viene interpretato come un percorso con segmenti separati da punti. Per esempio, account.profile.name diventa la proprietà name dentro profile, a sua volta contenuta in account. Una chiave senza punti rimane al livello principale.
I valori non vengono convertiti: un numero resta numero, false resta booleano, null rimane nullo e gli array mantengono ordine e contenuto. Il risultato contiene il documento ricostruito in json e il conteggio keys delle proprietà elaborate. I segmenti che sembrano numeri sono normali chiavi di oggetto, non indici di array; la trasformazione non inventa quindi una forma di raccolta assente dall’input.
Il processo è deterministico, non usa la rete e non dipende da impostazioni locali, orario o effetti dell’ordine di inserimento.
Individui i percorsi in conflitto prima di perdere dati
La ricostruzione diventa rischiosa quando una chiave definisce un percorso come valore finale e un’altra richiede che lo stesso percorso sia un oggetto. La capacità rifiuta l’input con un errore di dati non validi invece di scegliere la proprietà visitata per ultima. Vengono respinte anche le collisioni dentro oggetti espliciti.
Un oggetto fornito può essere esteso con discendenti puntati se nessun membro esistente collide, quindi settings come oggetto può convivere con il nuovo membro settings.theme. Chiavi vuote, punti iniziali o finali e punti doppi creano segmenti senza nome e sono rifiutati. Anche __proto__, prototype e constructor sono vietati a ogni livello, compresi gli oggetti forniti, per prevenire effetti legati ai prototipi.
Questi controlli rendono visibili gli errori e garantiscono un’origine univoca per ogni posizione prodotta.
Usi il risultato in migrazioni e pipeline applicative
Le chiavi piatte compaiono spesso ai confini fra sistemi. Un errore di convalida indicherà così il record sorgente invece di lasciare proseguire una struttura incompleta. Nei lotti richiami la capacità una volta per record piatto, perché l’unità addebitata è un elemento e ogni risposta descrive un documento.
I punti nei valori testuali sono innocui: soltanto i nomi delle proprietà diventano percorsi.
Domande frequenti
Quanto costa?
Può anche eseguire la trasformazione nel browser da questa pagina.
I segmenti numerici diventano array?
No. Ogni segmento rimane una chiave di oggetto, evitando ipotesi su indici e identificatori.
I tipi dei valori vengono conservati?
Sì. Stringhe, numeri finiti, booleani, null, array e oggetti vengono copiati senza conversione.
Una chiave può contenere un segmento vuoto?
No. Chiavi vuote, punti doppi e punti iniziali o finali vengono respinti perché ambigui.
Cosa succede se due nomi sono in conflitto, come user e user.name?
L'input viene rifiutato con un errore chiaro invece di tenere il nome arrivato per ultimo. Una stessa posizione non può essere insieme un valore finale e un gruppo, quindi in un risultato riuscito ogni posizione ha una sola origine.
I tipi dei valori vengono mantenuti?
Sì, nulla viene convertito di propria iniziativa: un numero resta un numero, falso resta falso, un valore nullo resta nullo e gli elenchi conservano ordine e contenuto. Anche un testo che contiene punti non viene spezzato.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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}}'const res = await fetch("https://api.kit.forhosting.com/data/unflatten-to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"flat": {
"user.name": "Ada",
"user.contact.email": "ada@example.com",
"active": true
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/unflatten-to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"flat": {
"user.name": "Ada",
"user.contact.email": "ada@example.com",
"active": true
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/unflatten-to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"flat":{"user.name":"Ada","user.contact.email":"ada@example.com","active":true}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"flat":{"user.name":"Ada","user.contact.email":"ada@example.com","active":true}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/unflatten-to-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"flat": {
"user.name": "Ada",
"user.contact.email": "ada@example.com",
"active": true
}
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.unflatten_to_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
max_mb | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Trasformi un oggetto JSON piatto come {"account.name":"Ada"} nella struttura annidata realmente richiesta dall’applicazione. Questo strumento deterministico espande ogni chiave separata da punti, conserva stringhe, numeri, booleani, valori null, array e oggetti e segnala i percorsi ambigui senza sovrascrivere dati in silenzio.
Converta i percorsi con punti in un normale documento JSON
Inserisca un oggetto JSON nel campo flat. L’output resta stabile per configurazioni, alias di database e invii di moduli. Utilizzi valori JSON validi e racchiuda tra virgolette ogni proprietà.
Individui i percorsi in conflitto prima di perdere dati
Un input con user come stringa e user.name come ulteriore valore non può rappresentare entrambe le informazioni in un’unica struttura JSON.
Usi il risultato in migrazioni e pipeline applicative
Le query SQL producono alias come customer.address.city, le piattaforme di log e analisi appiattiscono eventi per indicizzarli, i moduli HTML raggruppano controlli con nomi puntati e i sistemi di distribuzione rappresentano impostazioni strutturate come variabili separate. Collochi questa conversione subito dopo la lettura del formato di confine e prima di applicare uno schema JSON annidato. Il browser è comodo per ispezioni singole, mentre l’API parte da $0.002 per l’automazione. Poiché i valori sono copiati senza analizzare stringhe o dedurre tipi, analizzi prima le stringhe che contengono intenzionalmente JSON.
Casi di integrazione
Ripristinare gli alias delle query
Converta customer.name e customer.address.city nell’oggetto customer annidato richiesto da un’API.
Preparare configurazioni da convalidare
Ricostruisca le impostazioni annidate prima di applicare uno schema JSON o valori predefiniti.
Normalizzare moduli ed eventi
Trasformi nomi puntati di moduli, log o esportazioni analitiche in normale JSON.
Domande tecniche
Cosa accade se una chiave è prefisso di un’altra?
Se il prefisso contiene un valore non oggetto, la richiesta termina con invalid_input perché i due percorsi non possono coesistere.