Ինչպես համեմատել երկու JSON կառուցվածք JSON Diff-ով
Տեղադրեք երկու ամբողջական JSON արժեքները համապատասխան մուտքերում և գործարկեք համեմատությունը։ Արդյունքը կցուցադրի նույնականության վիճակը կամ կառուցվածքային տարբերությունների մանրամասներն ու դրանց հաշվարկը։
Երկու JSON կառուցվածքների համեմատության նպատակը
JSON Diff-ը նախատեսված է երկու JSON պարունակող մուտքերի վերլուծված կառուցվածքները համեմատելու համար։ Գործիքը օգտակար է, երբ ցանկանում եք ստուգել տվյալների երկու տարբերակ, օրինակ՝ կարգավորումների ֆայլի, API-ի պատասխանի կամ որևէ այլ JSON օբյեկտի փոփոխությունը։ Այստեղ համեմատվում է ոչ թե տեքստի տողերի դասավորությունը, այլ JSON-ի վերլուծված կառուցվածքը, ուստի արդյունքը կարող է ցույց տալ ներդրված օբյեկտների, զանգվածների, հատկությունների և արժեքների տարբերություններ։
Երկու մուտքային դաշտերն էլ կամընտիր են և սկզբում կարող են դատարկ լինել։ Համեմատության համար սովորաբար պետք է լրացնել երկուսն էլ JSON տվյալներով, սակայն դատարկ դաշտի վարքագիծը առանձին սահմանված է և չի նշանակում, որ այդ դաշտը պետք է նախապես հեռացնել կամ փոխարինել որևէ արժեքով։ Արդյունքը կարդալիս ուշադրություն դարձրեք երեք հարցի՝ արդյոք համեմատությունը հաջող է ավարտվել, արդյոք կառուցվածքները նույնական են, և եթե կան շեղումներ, քանի տարբերություն է արձանագրվել։
Համեմատությունը կատարելու գործնական հերթականությունը
-
Պատրաստեք համեմատվող տվյալների երկու առանձին տարբերակները։ Յուրաքանչյուր տարբերակը գրեք ամբողջական JSON-ի տեսքով՝ պահպանելով փակագծերը, չակերտները, ստորակետները և արժեքների համապատասխան ձևաչափը։ JSON արժեք կարող է լինել օբյեկտ, զանգված, տող, թիվ, տրամաբանական արժեք կամ
null, եթե այն գրված է վավեր շարահյուսությամբ։ -
Առաջին տարբերակը տեղադրեք առաջին տեքստային մուտքում, իսկ երկրորդը՝ երկրորդում։ Եթե տվյալների մեջ կան ներդրված օբյեկտներ կամ զանգվածներ, ներառեք դրանք ամբողջությամբ, որպեսզի համեմատությունը հասնի նաև ներքին մակարդակներին։ Մի փոխարինեք տվյալների մի մասը սովորական մեկնաբանությամբ, քանի որ այդպիսի տեքստը կարող է դառնալ անվավեր JSON։
-
Գործարկեք համեմատությունը և սպասեք վերադարձված արդյունքին։ Հաջող համեմատության դեպքում նախ պարզեք, թե արդյունքը երկու վերլուծված կառուցվածքները նույնական է համարում, թե ոչ։ Նույնականության նշումը վերաբերում է վերլուծված JSON-ին, ոչ թե այն բանին, թե մուտքերում բացատները կամ տողերի դասավորությունը տեսքով նույնն են։
-
Եթե կառուցվածքները չեն համընկնում, ուսումնասիրեք ներկայացված տարբերությունների մանրամասները։ Դրանք կարող են վերաբերել օբյեկտի հատկության ավելացմանը կամ հեռացմանը, արժեքի փոփոխությանը, զանգվածի երկարության տարբերությանը կամ համապատասխան զանգվածային դիրքերի շեղմանը։ Արդյունքում նշված տարբերությունների քանակը օգտագործեք որպես արձանագրված շեղումների ընդհանուր հաշվիչ, իսկ մանրամասները՝ փոփոխության բնույթը հասկանալու համար։
-
Եթե արդյունքը անհաջող է, կարդացեք վերլուծման սխալի տեղեկությունը և ստուգեք այն մուտքը, որը ոչ դատարկ էր, բայց չէր վերլուծվել որպես JSON։ Ուղղեք շարահյուսությունը, նորից տեղադրեք ամբողջական արժեքը և կրկին գործարկեք համեմատությունը։ Մի փորձեք կառուցվածքային տարբերությունների ցանկ փնտրել նման արդյունքի մեջ, քանի որ սխալի դեպքում այդպիսի տարբերություններ չեն հաղորդվում։
Արդյունքի տարբեր վիճակների ընթերցումը
Նույնական կառուցվածքի մասին նշումը նշանակում է, որ երկու վերլուծված JSON մուտքերը համընկել են։ Եթե արդյունքը ցույց է տալիս, որ դրանք նույնական չեն, տարբերությունների քանակը ցույց է տալիս արձանագրված շեղումների թիվը, իսկ մանրամասները օգնում են տարբերել արժեքի փոփոխությունը հատկության կամ զանգվածի փոփոխությունից։
Դատարկ կամ միայն բացատներից կազմված մուտքի դեպքում գործիքը հաջող արդյունք է վերադարձնում, չի հաղորդում տարբերություններ, բայց նշում է, որ մուտքերը նույնական չեն։ Այդ հատուկ արդյունքը պետք է կարդալ որպես դատարկ մուտքի համար սահմանված վարքագիծ, ոչ թե որպես հաստատում, որ երկու լրացված JSON տվյալներ իրար համապատասխանում են։
Ոչ դատարկ և սխալ ձևաչափով մուտքը այլ արդյունք է առաջացնում. համեմատությունը անհաջող է, տարբերություններ չեն հաղորդվում, իսկ պատասխանը ներառում է վերլուծման սխալի տեղեկություն։ Այս սահմանազատումը կարևոր է, քանի որ սխալ JSON-ի դեպքում չպետք է տարբերությունների բացակայությունը շփոթել նույնական կառուցվածքի հետ։ Գործիքը նաև չի առաջարկում տարբերությունները միավորող կամ ուղղող նոր տվյալներ, այնպես որ հայտնաբերված շեղումների հետագա որոշումը պետք է կատարեք ձեր տվյալների համատեքստում։
Գործնական օրինակ
Դուք համեմատում եք API-ի պատասխանի երկու JSON տարբերակ՝ պարզելու համար, թե արդյոք ակտիվության արժեքը փոխվել է։
Առաջին մուտքում տեղադրեք {"active":false} օբյեկտը, երկրորդում՝ նույն օբյեկտը {"active":true} արժեքով, ապա գործարկեք համեմատությունը։
Արդյունքը ցույց է տալիս, որ մուտքերը նույնական չեն, նշում է «active» արժեքի փոփոխությունը որպես կառուցվածքային տարբերություն և ներկայացնում տարբերությունների հաշվարկը։
Սահմանափակումներ
- Կառուցվածքային համեմատության արդյունքը պետք է մեկնաբանել միայն մուտքերի վիճակը հաշվի առնելով. սխալ ոչ դատարկ JSON-ը բերում է անհաջող արդյունքի, իսկ դատարկ մուտքը հաջող վերադարձով չի հաղորդում տարբերություններ և չի նշում նույնականություն։
Հաճախակի սխալներ
- Սխալի պատճառ կարող է լինել հատկության անունը առանց կրկնակի չակերտների կամ չփակված փակագիծը։ Ուղղեք անվավեր շարահյուսությունը երկու մուտքերում, համոզվեք, որ արժեքը ամբողջական JSON է, և նորից գործարկեք համեմատությունը։
Հաճախ տրվող հարցեր
Կարո՞ղ է գործիքը համեմատել ներդրված օբյեկտներ և զանգվածներ։
Այո, եթե երկու մուտքերն էլ վավեր և ոչ դատարկ JSON են, համեմատությունը ներառում է ներդրված օբյեկտներն ու զանգվածները։ Այդ պատճառով ներքին հատկության կամ զանգվածի դիրքի փոփոխությունը կարող է հայտնվել տարբերությունների մանրամասներում։
Ի՞նչ է տեղի ունենում դատարկ մուտքի դեպքում։
Եթե մուտքերից մեկը դատարկ է կամ պարունակում է միայն բացատներ, վերադարձը հաջող է, տարբերությունների ցանկ չի ներկայացվում, և միաժամանակ նշվում է, որ մուտքերը նույնական չեն։
Ի՞նչ կլինի, եթե JSON-ը սխալ ձևաչափով լինի։
Եթե ոչ դատարկ մուտքը չի վերլուծվում որպես JSON, արդյունքը անհաջող է, տարբերություններ չի պարունակում և ներառում է վերլուծման սխալի տեղեկություն։ Նախ ուղղեք տվյալների շարահյուսությունը, ապա կրկին կատարեք համեմատությունը։