ForHosting KIT · Dati e file

Confronto di oggetti JSON: tutte le chiavi modificate

Metta a confronto la versione vecchia e quella nuova di un record di dati e ottenga solo le differenze reali: nell'esempio 2 aggiunte, 1 rimozione e 2 modifiche, 5 in tutto, senza contare spazi né ordine delle chiavi. Gratis nel suo browser.

  • Gratis
  • Funziona nel suo browser
  • Senza registrazione
  • I suoi dati restano sul dispositivo
Usalo da WebAPIEmailTelegramApp presto

Funziona nel tuo browser: gratis, senza registrazione, i file non escono dal tuo dispositivo.

Gli array mantengono l’ordine e vengono confrontati per intero. L’operazione è deterministica, non usa la rete e rifiuta array, primitive o null come valori di primo livello.

Confrontare i dati, non il testo

Un confronto di testo fa sembrare enorme un piccolo aggiornamento, perché rientri, ordine delle chiavi e altri dettagli di formattazione distolgono l'attenzione dai dati. Questo strumento legge le due versioni come dati, quindi contano solo le differenze reali: se il contenuto è lo stesso con spazi o ordine diversi, le tre liste risultano vuote. Quando una sezione esiste da entrambe le parti, il confronto entra al suo interno e indica il dato più profondo che è cambiato, come /profile/active nell'esempio. Le liste si confrontano per intero: aggiungere editor a roles produce un'unica modifica, con la lista precedente e quella nuova complete.

Quando serve e cosa conviene guardare

Prima di pubblicare una nuova configurazione, una revisione può fermare la modifica se tra le voci rimosse ci sono impostazioni protette; una verifica automatica può confermare che sono cambiati solo i percorsi approvati, e un audit può conservare la differenza compatta invece di due documenti grandi. Guardi sempre la categoria e non solo il percorso: togliere un valore e aggiungerne un altro altrove non equivale a modificarne uno esistente. I totali riassumono il risultato, e le due versioni devono essere record con nomi al primo livello, non una lista né un valore isolato.

Come leggere l'elenco delle differenze

Il risultato suddivide le differenze in raccolte di aggiunte, rimozioni e modifiche. Un’aggiunta esiste solo nell’oggetto aggiornato, una rimozione solo nell’originale e una modifica include i valori precedente e successivo. Una barra nel nome di una chiave diventa ~1 e una tilde diventa ~0, evitando ambiguità con i livelli annidati.

Le proprietà vengono visitate in ordine per produrre risposte stabili. Il blocco counts riepiloga categorie e totale. Se tutte e tre le liste sono vuote, gli oggetti sono strutturalmente uguali anche quando il testo originale presenta rientri o ordine delle chiavi differenti.

Gestione di oggetti annidati e array

Quando la stessa chiave contiene un oggetto su entrambi i lati, il confronto scende fino alla proprietà precisa che differisce. Se cambia solo profile.active, il percorso restituito è /profile/active. Una chiave presente su un solo lato viene invece registrata una volta con il valore completo, senza espandere tutti i discendenti.

Primitive e null vengono confrontati direttamente; anche un cambio di tipo è una modifica.

Revisionare una configurazione

Confronti la configurazione distribuita con quella candidata senza rumore di spazi o ordine delle chiavi.

Proteggere le impostazioni approvate

Controlli i percorsi in CI e fermi il rilascio quando cambia un’opzione protetta.

L’ordine delle chiavi conta come modifica?

No. Il confronto considera chiavi e valori, quindi un altro ordine di serializzazione non genera differenze.

Come vengono confrontati gli array?

Sono valori ordinati confrontati per intero. Qualsiasi modifica, inserimento, rimozione o riordino li segnala.

Come si legge il percorso indicato per ogni differenza?

Il percorso inizia con una barra e scende di un livello a ogni barra: /profile/name indica il nome che si trova dentro profile. Una barra dentro un nome si scrive ~1 e una tilde si scrive ~0, così nessun nome viene scambiato per un livello.

Una modifica dentro una sezione compare a parte?

Sì. Quando le due versioni contengono la stessa sezione, il confronto entra al suo interno e indica il dato più profondo che differisce. Nell'esempio è cambiato solo active dentro profile, quindi il risultato riporta /profile/active e non l'intero profilo.

Cosa succede se un'intera sezione è nuova?

Viene annotata una sola volta, con tutto il suo contenuto, invece di una voce per ogni dato interno. Così una sezione di configurazione appena aggiunta si legge come un unico evento e non come un lungo elenco di aggiunte sparse.

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.

POSThttps://api.kit.forhosting.com/data/diff-json-objects

Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.

curl -X POST https://api.kit.forhosting.com/data/diff-json-objects \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"before":{"name":"Ada","profile":{"active":true,"score":8},"roles":["reader"]},"after":{"name":"Ada","profile":{"active":false,"score":8,"city":"London"},"roles":["reader","editor"]}}'
{
  "before": {
    "name": "Ada",
    "profile": {
      "active": true,
      "score": 8
    },
    "roles": [
      "reader"
    ]
  },
  "after": {
    "name": "Ada",
    "profile": {
      "active": false,
      "score": 8,
      "city": "London"
    },
    "roles": [
      "reader",
      "editor"
    ]
  }
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "data.diff_json_objects",
  "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.

per richiesta$0.002

Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.

max_mb25
HTTPCodiceSignificato
401unauthorizedChiave API mancante o non valida: controlla l'header Authorization.
402insufficient_balanceCredito esaurito: ricarica per continuare a eseguire attività.
404unknown_typeTipo di attività sconosciuto: controlla il campo type della richiesta.
429rate_limitedTroppe richieste in poco tempo: rallenta e riprova tra qualche secondo.

Un confronto testuale può rendere rumoroso un piccolo aggiornamento JSON, perché rientri, ordine delle chiavi e formattazione nascondono i dati realmente modificati. Questo strumento confronta i valori analizzati, separa chiavi aggiunte, rimosse e cambiate, percorre gli oggetti annidati comuni e assegna un percorso JSON Pointer inequivocabile.

Come leggere una differenza JSON strutturale

Ogni voce usa un percorso JSON Pointer che inizia con una barra: /profile/name indica name dentro profile.

Gestione di oggetti annidati e array

Gli array sono valori JSON ordinati confrontati per intero: inserimento, eliminazione, riordino o modifica di un elemento segnala l’intera proprietà. Solo le due radici seguono una regola più rigida: before e after devono essere oggetti JSON non nulli.

Uso nelle revisioni e nelle automazioni

Può bloccare un rilascio se scompare un’impostazione protetta, verificare che cambino soltanto percorsi autorizzati o conservare una differenza compatta per gli audit. Per gli array riceverà i valori completi, sui quali potrà applicare regole specifiche. Una radice non valida restituisce un errore chiaro, non una differenza vuota ingannevole. Inserisca l’oggetto originale in before e quello proposto in after. Lo strumento web opera localmente, mentre una richiesta API costa $0.002 e restituisce la stessa struttura deterministica. Poiché formattazione e ordine non producono falsi positivi, è adatto a configurazioni, webhook, flag, permessi e risposte normalizzate. Interpreti i percorsi come JSON Pointer e consideri anche la categoria.

Verificare l’evoluzione dei webhook

Registri i campi annidati comparsi, scomparsi o cambiati tra due esempi normalizzati.

Quale formato usano i percorsi?

Ogni percorso è un JSON Pointer in stile RFC 6901: le barre nelle chiavi diventano ~1 e le tildi ~0.

Posso confrontare due array al livello principale?

No. before e after devono essere oggetti JSON non nulli; altre radici causano un errore di input.

Quanto costa una richiesta API?

Lo strumento web funziona gratis in locale. Ogni richiesta API usa il prezzo base pubblicato di $0.002.

Leggi la documentazione completa del KIT →