Digitális és informatikai

JSON összehasonlítása: kulcssorrend, tömbsorrend és számként tárolt adatok

Mit jelent tényleges változás két JSON-változat között? Objektumok, rendezett listák, szám és szöveg, hiányzó mezők és egy ellenőrizhető összegpélda.

Dajka Gábor3 perc olvasás

Két JSON-szöveg eltérhet úgy, hogy ugyanazokat az adatokat tartalmazza. A behúzás, a sortörés és az objektum mezőinek sorrendje önmagában kevés egy tartalmi változás kimondásához. A tömbök sorrendje, a mezők adattípusa és a hiányzó értékek viszont érdemi különbséget jelenthetnek.

Először azt ellenőrizd, érvényes-e a bemenet

A JSON formázó és ellenőrző alkalmas arra, hogy az összehasonlítás előtt átnézd a két adatszerkezetet. A JSON mezőneveit és szöveges értékeit dupla idézőjel határolja. Egy kimaradt idézőjel vagy egy fölösleges vessző miatt az egész beolvasás meghiúsulhat.

Az RFC 8259 az objektumot név–érték párok rendezetlen gyűjteményeként, a tömböt rendezett sorozatként határozza meg. A szöveg és a szám külön adattípus. Ezek a különbségek adják az összehasonlítás alapját; a konkrét program viselkedését pedig a saját összehasonlítási szabálya teszi egyértelművé.

A DG JSON-összehasonlító kulcsútvonalak szerint mutatja az eltéréseket. Az objektumkulcsok sorrendjét figyelmen kívül hagyja, a tömbelemeket az indexük alapján veti össze.

Ugyanaz a rendelési tétel két állapotban

Szemléltető példánkban egy tétel két változatát vizsgáljuk. A cikkszám szövegként tárolt azonosító, az egységár és a darabszám számszerű adat. A megadott árak kizárólag a számítás példaszámai.

MezőElső állapotMásodik állapot
cikkszam„0017”„0017”
egysegar19 20019 350
darab32

Két mező értéke módosult. A cikkszám változatlan, akkor is, ha a második állapotban a dokumentum végére került. Az egységár változása 19 350 − 19 200 = 150, a darabszám változása 2 − 3 = −1.

A tételösszeget külön számítással ellenőrizzük: az első állapotban 19 200 × 3 = 57 600, a másodikban 19 350 × 2 = 38 700. Az eltérés −18 900. Az összehasonlító a mezőváltozásokat mutatja; egy üzleti rendszerben az összegre gyakorolt hatást a megfelelő számítási szabállyal kell értelmezned.

A listák felcserélése több eltérést okozhat

Képzelj el három színt tartalmazó listát: piros, zöld, kék. A második változatban kék, zöld, piros a sorrend. Index szerinti összevetésnél az első és a harmadik hely változik: háromból két pozíció, vagyis 66,67%.

A színek halmaza közben ugyanaz maradt. Ez hasznos különbségtétel: egy rangsorban a sorrend a jelentés része, egy címkelistánál viszont az alkalmazás szabálya döntheti el, számít-e. Ne rendezd át automatikusan az összes tömböt az összehasonlítás előtt. Előbb azonosítsd, mely listáknál szabad elengedni a sorrendet.

Szám, szöveg, hiány és üres érték

A 17 szám és a „0017” szöveg más adat. Az azonosítóként használt kezdő nullák csak a szöveges alakban őrizhetők meg egyértelműen. A hiányzó mező és a null értékkel jelen lévő mező között is van szerkezeti eltérés. Az üres szöveg ismét külön eset: a mező létezik, és egy nulla hosszúságú szöveget tartalmaz.

Nagyon hosszú számsoroknál a beolvasó számábrázolása is számít. Az RFC 8259 a széles körben használt bináris lebegőpontos megoldásoknál a 2⁵³ − 1 = 9 007 199 254 740 991 határig emeli ki az egész számok pontos együttműködését. Hosszú azonosítót ezért az adatküldő és adatfogadó szerződése szerint, megfelelő szöveges formában érdemes átadni.

Mielőtt jóváhagysz egy új exportot, válassz egy változatlan mezőt, egy módosult számot és egy átrendezett listát. Ez a három rövid ellenőrzés megmutatja, milyen eltérést jelez a választott eszköz, és hogyan kell olvasnod az eredményét.

További cikkek

Kapcsolódó olvasnivalók

Gyorskereső

Kalkulátorok és útmutatók keresése

↑↓ választásEnter megnyitásEsc bezárás