Jämförelse av text och strukturerad data
Att identifiera skillnader mellan två versioner av en text eller en datamängd är en grundläggande uppgift inom systemutveckling, dataanalys och dokumenthantering. Processen, som ofta kallas för att göra en "diff", synliggör exakt vilka segment som har lagts till, tagits bort eller modifierats mellan en ursprunglig källa och en uppdaterad version.
När man jämför råtext är målet vanligtvis att följa språkliga eller redaktionella ändringar rad för rad eller ord för ord. När det handlar om strukturerade dataformat som JSON (JavaScript Object Notation) är situationen annorlunda. En ren textjämförelse av JSON-kod kan visa falska skillnader på grund av ändrad formatering, radbrytningar eller att objektnycklar har bytt ordning. En semantisk JSON-jämförelse analyserar istället datastrukturen i sig, vilket gör det möjligt att identifiera faktiska värdeändringar oberoende av hur källkoden har formaterats.
Textjämförelse med rader eller ord som granularitet
I verktygets textläge kan jämförelsen utföras med två olika detaljnivåer (granularitet): rader eller ord. Valet av granularitet avgör hur förändringar identifieras och presenteras:
- Rader: Verktyget jämför texten rad för rad. Detta är optimalt för källkod, konfigurationsfiler eller listor där varje rad representerar en fristående enhet.
- Ord: Verktyget analyserar förändringar på ordnivå. Detta är mer lämpligt för löpande text, där enstaka ordbyten eller korrigeringar i en mening annars skulle markera hela raden som ändrad.
För att demonstrera skillnaderna kan följande exempeltext användas:
Vänster indata (Original):
BroBroGo-verktyg körs i din webbläsare.
De är snabba, privata och enkla.
Använd dem när du behöver en snabb koll.
Höger indata (Modifierad):
BroBroGo-verktyg körs i din webbläsare.
De är snabba, privata och fokuserade.
Använd dem när du behöver en snabb jämförelse.
Vid en jämförelse identifieras ordet "enkla" som borttaget och "fokuserade" som tillagt på andra raden, medan "koll" har ersatts med "jämförelse" på tredje raden.
Semantisk JSON-analys och strukturella sökvägar
När jämförelseläget ställs till JSON parsar verktyget indata till faktiska datastrukturer innan jämförelsen utförs. Detta innebär att verktyget kan skilja på rent kosmetiska skillnader och faktiska semantiska ändringar.
Hantering av objektnycklar och arrayer
- Objektnycklar: I JSON-specifikationen är ett objekt en osorterad samling av nyckel-värde-par. Verktyget jämför objektnycklar efter namn. Det betyder att om nycklarna har bytt ordning men innehåller samma värden, rapporteras detta inte som en semantisk ändring.
- Arrayer: Arrayer är ordnade listor. Verktyget jämför därför arrayer efter position (index). Om elementen i en array byter plats betraktas det som en förändring.
Identifiering via sökvägar
När skillnader hittas i JSON-läget listas de utifrån sina strukturella sökvägar. Om vi använder följande exempeldata:
Vänster JSON (Original):
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "hash"],
"private": true
}
Höger JSON (Modifierad):
{
"name": "BroBroGo",
"plan": "free",
"tools": ["json", "regex", "diff"],
"private": true,
"updated": 2026
}
Verktyget analyserar strukturerna och identifierar följande specifika ändringar:
- Värdet på index
2i arrayentoolshar ändrats från"hash"till"diff". - En ny nyckel
"updated"med värdet2026har lagts till i det övergripande objektet.
Om inga faktiska ändringar i datastrukturen identifieras visas meddelandet "Inga ändringar i JSON-värden hittades".
Gränser, prestanda och felhantering
För att säkerställa att webbsidan förblir responsiv och stabil under tunga beräkningar tillämpas strikta begränsningar och skyddsmekanismer vid bearbetning av stora datamängder:
- Teckenbegränsning: Indata för respektive sida ("Original" och "Modifierad") är begränsad till maximalt 300 000 tecken. Om denna gräns överskrids visas felmeddelandet "Inmatningen är för stor för detta verktyg. Prova en mindre jämförelse.".
- Tidsgräns (Timeout): Jämförelseprocessen avbryts automatiskt om den tar mer än 2,5 sekunder. Användaren möts då av meddelandet "Denna jämförelse tar för lång tid. Prova med mindre indata eller radläge.".
- Begränsat resultat: Om datamängden är mycket stor men ligger inom gränserna kan verktyget välja att visa en trunkerad vy. Meddelandet "Visar ett begränsat resultat så att sidan förblir responsiv." signalerar att hela diffen inte renderas fullt ut.
- Validering av JSON: Om indata i JSON-läge inte är formaterad enligt gällande JSON-standard kan jämförelsen inte genomföras. Verktyget visar då "Vänster JSON är ogiltig:" eller "Höger JSON är ogiltig:" följt av det specifika parser-felet.
- Generella fel: Om en jämförelse av andra skäl misslyckas visas meddelandet "Kunde inte jämföra dessa indata.".
Lokal databehandling och integritet
När du arbetar med känslig information, såsom konfigurationsfiler med systeminställningar, API-svar som innehåller användardata eller interna textdokument, är datasäkerhet en kritisk faktor.
Detta verktyg är byggt för att köra alla jämförelser lokalt i din webbläsare. Ingen text eller JSON-data skickas över nätverket till externa servrar, och ingenting laddas upp till BroBroGo. Eftersom bearbetningen sker helt på klientsidan exponeras inte dina data för tredje part under jämförelseprocessen.
Vanliga frågor
Vad är skillnaden mellan text- och JSON-läge?
Textläget jämför råinnehållet rad för rad eller ord för ord. JSON-läget parsar först båda sidor, formaterar dem enhetligt och listar ändrade sökvägar som $.user.email.
Kan verktyget hantera mycket stora indata?
Långsamma jämförelser avbryts efter 2,5 sekunder. Mycket stora oavsiktliga inklistringar begränsas så att sidan förblir responsiv.
Ignorerar JSON-läget ordningen på objektnycklar?
Den strukturerade ändringslistan jämför objektnycklar efter namn, så enbart ändrad ordning på nycklar rapporteras inte som en semantisk ändring. Arrayer jämförs efter position.
Vad händer om min JSON-kod innehåller formateringsfel?
Om koden inte är giltig JSON kan verktyget inte parsa strukturen. Du kommer då att se ett felmeddelande som anger vilken sida som är felaktig, till exempel "Vänster JSON är ogiltig:" följt av feldetaljerna. För att jämföra ogiltig JSON kan du istället växla över till textläget.