CSV և JSON. նույն տվյալները փոխադրելու երկու եղանակ
Աղյուսակային տվյալների մեծ մասն ավարտվում է երկու ֆորմատներից մեկում։ CSV-ն աղյուսակների բնիկ լեզուն է. պարզ տեքստային ֆայլ, որտեղ ամեն տող մեկ տող է, և ստորակետերն առանձնացնում են սյուները։ JSON-ը API-ների և հավելվածների լեզուն է. կառուցվածքային տեքստային ֆորմատ, կառուցված օբյեկտներից (բանալի-արժեք զույգեր) և զանգվածներից (կարգավորված ցանկեր)։ Դրանք նկարագրում են նույն տեղեկատվությունը շատ տարբեր ձևերով, և հենց դա էլ պատճառն է, թե ինչու է դրանց միջև փոխարկումն այդքան հաճախ առաջանում։ Այս էջն այդ փոխարկումն անում է երկու ուղղություններով, ամբողջությամբ ձեր բրաուզերում։
CSV-ն փայլում է ցանկացած տեղ, որտեղ ցանցը բնական է թվում։ Արտահանեք հաշվետվություն տվյալների բազայից, ներբեռնեք պատվերների ցանկ, կամ պահպանեք թերթիկ Excel-ից կամ Google Sheets-ից, և գրեթե միշտ ստանում եք CSV։ Այն կոմպակտ է, մարդու համար ընթեռնելի, և Երկրի ամեն վերլուծական գործիք կարող է այն բացել։ JSON-ը փայլում է ցանկացած տեղ, որտեղ ծրագրաշարը խոսում է ծրագրաշարի հետ։ REST API-ները ուղարկում և ստանում են այն, կոնֆիգուրացիայի ֆայլերն օգտագործում են այն, և JavaScript-ը կարդում է այն առանց մեկնաբանման որևէ գրադարանի։ Երբ ձեզ հարկավոր է աղյուսակի արտահանում սնուցել API-ի մեջ կամ API-ի պատասխան քաշել աղյուսակի մեջ, դուք իրականում թարգմանում եք այս երկու աշխարհների միջև։

Ինչպես են տողերն ու վերնագրերը դառնում օբյեկտներ
Համապատասխանությունը ավելի պարզ է, քան թվում է։ CSV ֆայլի առաջին տողը սովորաբար վերնագրի տողն է, և այդ վերնագրերի անունները դառնում են JSON-ի բանալիներ։ Ամեն հաջորդ տող դառնում է մեկ օբյեկտ, որտեղ ամեն վանդակ զուգորդվում է համապատասխան վերնագրի հետ։ Ամբողջ ֆայլը դառնում է այդ օբյեկտների զանգված։ Այսպես, name,email,age սյուներով CSV-ն դառնում է ցանկ, ինչպիսին է [{"name": "Ada", "email": "ada@example.com", "age": "36"}, ...]։ Հակառակ ուղղությամբ, JSON-ից CSV-ն կարդում է առաջին օբյեկտի բանալիները՝ վերնագրի տողը կառուցելու համար, ապա գրում է մեկ տող՝ ամեն օբյեկտի համար։ Դա մաքուր, կանխատեսելի փոխադարձ ուղևորություն է, քանի դեռ ձեր տվյալները իսկապես աղյուսակային են։
Խորհրդանշական նրբությունները, որ արժե իմանալ
CSV-ն թվում է անմեղ, բայց թաքցնում է մի քանի սուր եզրեր։ Ամենամեծը վանդակի ներսում ստորակետերն են։ Եթե հասցեն պարունակում է «Berlin, Germany», ստորակետով պարզ բաժանումը այդ մեկ արժեքը կպատառոտի երկու սյան։ CSV ստանդարտն այս խնդիրը լուծում է այդպիսի վանդակները կրկնակի չակերտների մեջ փաթեթավորելով, և կրկնակի չակերտները մեջբերված վանդակի ներսում կրկնապատկվում են ("")։ Լավ փոխարկիչը հարգում է այս կանոնները, որպեսզի ձեր տվյալները լուռ սյուն չփոխեն։ Հետևեք նաև սահմանազատիչին. շատ եվրոպական արտահանումներ օգտագործում են ստորակետ-կետ ստորակետի փոխարեն, քանի որ ստորակետն այնտեղ արդեն տասնորդական բաժանարար է։ Tab-երն ու pipe-երն էլ են հանդիպում։
Ավելի խորը տարբերությունը տիպերն են։ CSV-ն ընդհանրապես տվյալների տիպի հասկացություն չունի։ Ամեն ինչ տեքստ է, ուստի 42 թիվը, true բուլյան արժեքը, և դատարկ վանդակը բոլորն էլ սովորական տողերի տեսք ունեն։ JSON-ը, ընդհակառակը, տարբերում է թվեր, տողեր, բուլյան արժեքներ, null-ը և ներդրված կառուցվածքները։ CSV-ից JSON փոխարկելիս, արժեքները հասնում են որպես տողեր, եթե գործիքին չասված է մեկնաբանել թվեր և բուլյան արժեքներ։ JSON-ից CSV փոխարկելն ունի հակառակ խնդիրը. ներդրված օբյեկտներն ու զանգվածները հարթ ցանցում մաքուր չեն տեղավորվում, ուստի սովորաբար հարթեցվում կամ վերածվում են մեկ վանդակի ներսում գտնվող տողի։ Սա նախապես իմանալը ձեզ պահում է հետագայում «ինչու է սյունը սխալ տեսք ունենում» գլուխ ջարդելուց։

Իրական փոխադարձ ուղևորություն
Ահա մի սցենար, որ մշտապես առաջանում է։ Գործընկերն ուղարկում է ձեզ նոր օգտատերերի աղյուսակ և խնդրում է ձեզ բեռնել նրանց ներքին API-ի միջոցով։ API-ն ընդունում է միայն JSON։ Դուք թերթիկն արտահանում եք CSV-ի, տեղադրում այստեղ և ստանում մաքուր օբյեկտների զանգված՝ պատրաստ ձեր հարցումի ծանրաբեռնվածության մեջ դնելու։ Ավելի ուշ, API-ն վերադարձնում է ստեղծված գրառումների JSON ցանկ, և ձեզ հարկավոր է այն հետ հանձնել նույն գործընկերոջը վերանայման համար։ Դուք տեղադրում եք JSON-ը, փոխարկում CSV-ի, և այն ուղիղ բացվում է իրենց աղյուսակում։ Ոչ մի սկրիպտ, ոչ մի տեղադրում, պարզապես երկու արագ թարգմանություն սովորական աշխատանքային հոսքի մեջտեղում։
Միայն տեղական, հատուկ ընտրված
Այս ամենն աշխատում է ձեր բրաուզերում։ Ձեր CSV-ն և JSON-ը վերլուծվում և փոխարկվում են JavaScript-ով ձեր սեփական մեքենայի վրա, և ոչինչ չի վերբեռնվում սերվեր։ Դա կարևոր է, քանի որ արտահանումները հաճախ պարունակում են իրական անուններ, էլփոստեր, պատվերի մանրամասնություններ կամ ներքին նույնացուցիչներ, որոնք չպետք է տեղադրեք որևէ պատահական հեռակա ծառայության մեջ։ Այստեղ տվյալները երբեք չեն հեռանում էջից։ Եթե ցանկանում եք հետո արդյունքը կարգավորել, մեր JSON ձևակերպիչը կկարգավորի և կվավերացնի այն, և կարող եք դիտել մեր մյուս տվյալների փոխարկիչները հարակից ֆորմատների համար։
Հաճախ տրվող հարցեր
Իմ տվյալները վերբեռնվու՞մ են ինչ-որ տեղ։
Ոչ։ Փոխարկումն ամբողջությամբ կատարվում է ձեր բրաուզերում՝ JavaScript-ի միջոցով, ուստի ձեր CSV-ն և JSON-ը մնում են ձեր սեփական սարքում և երբեք չեն ուղարկվում սերվեր։
Փոխարկիչը մշակու՞մ է ստորակետերը վանդակների ներսում։
Այո։ Ստորակետեր պարունակող վանդակները պետք է փաթեթավորված լինեն կրկնակի չակերտների մեջ CSV-ում, և վերլուծիչը հարգում է այդ չակերտները, որպեսզի արժեքը մնա մեկ սյան մեջ։
Ինչու՞ են իմ թվերն ի հայտ գալիս որպես տեքստ JSON-ում։
CSV-ն տվյալների տիպեր չունի, ուստի ամեն վանդակ պարզ տեքստ է։ Արժեքները դառնում են JSON տողեր, եթե չկիրառվի թվերի և բուլյան արժեքների վերլուծություն, քանի որ աղբյուր ֆայլն ուղղակի եղանակ չունի թիվը բառից տարբերելու։
Ի՞նչ է պատահում ներդրված JSON-ին, երբ փոխարկում եմ CSV-ի։
Հարթ ցանցը չի կարող պահել ներդրված կառուցվածքներ, ուստի ներդրված օբյեկտներն ու զանգվածները սովորաբար հարթեցվում կամ գրվում են որպես մեկ վանդակի ներսում գտնվող տողային արժեք։
Կարո՞ղ եմ ստորակետի փոխարեն օգտագործել ստորակետ-կետ կամ tab։
Այո։ Շատ արտահանումներ, հատկապես եվրոպականները, օգտագործում են ստորակետ-կետ կամ tab-եր որպես սահմանազատիչ, և գործիքը կարող է դրանք կարդալ ստանդարտ ստորակետի փոխարեն։
Այն փոխարկու՞մ է երկու ուղղություններով։
Այո։ Կարող եք CSV-ն վերածել JSON-ի, և JSON-ը՝ հետ CSV-ի, ինչը հեշտացնում է աղյուսակների ու API-ների միջև փոխադարձ ուղևորությունները։
