JSON-დან CSV-ში გარდაქმნა: იერარქიული მონაცემების ბრტყელ ცხრილად ქცევა
რა ხდის ამ გვერდს განსხვავებულს
CSV-Excel ან Excel-JSON გარდაქმნებისგან განსხვავებით, ეს მიმართულება აბრტყელებს იერარქიულ, ტიპიზირებულ მონაცემთა ფორმატს ბრტყელ, უტიპო ცხრილად. JSON მხარს უჭერს ობიექტებს, მასივებს, რიცხვებს, booleans-ებსა და null-ს ჩადგმულ სტრუქტურებში. CSV-ს არ გააჩნია არც ტიპები, არც ჩადგმულობა და არც ფურცლები. გარდაქმნის დროს იკარგება ტიპების ინფორმაცია, ჩადგმული სტრუქტურა, მრავალი ფურცელი (რომელიც JSON-ში არ არსებობს) და ფორმატირება.
CSV-სა და JSON-ს შორის ფუნდამენტური განსხვავება ისაა, რომ JSON-ს შეუძლია ნებისმიერი სიღრმის ჩადგმული ობიექტების შენახვა, ხოლო CSV მხოლოდ ერთგანზომილებიანი ბრტყელი ცხრილის ფორმატია. როდესაც JSON-ის იერარქიულ სტრუქტურას CSV-ში ვაქცევთ, ჩვენ ვკარგავთ იმ ლოგიკურ კავშირებს, რაც ჩადგმულ ობიექტებს შორის არსებობდა. მაგალითად, თუ JSON-ში გვაქვს {"address": {"city": "Tbilisi", "street": "Rustaveli"}}, CSV-ში ეს გადაიქცევა ორ ცალკეულ სვეტად: address.city და address.street.
ეს ნიშნავს, რომ მომხმარებელმა წინასწარ უნდა გადაწყვიტოს, როგორ უნდა იყოს ჩადგმული ველები წარმოდგენილი. ინსტრუმენტი ნაგულისხმევად იყენებს dot-path ნოტაციას, მაგრამ ეს არ არის ერთადერთი შესაძლებლობა.
JSON-ის ცხრილის ფორმაში მოყვანა
JSON-ის CSV-ად გადასაყვანად, ის ჯერ ცხრილის ფორმის უნდა იყოს. ეს ნიშნავს, რომ JSON-ის ძირითადი სტრუქტურა უნდა იყოს ან ობიექტების მასივი (array of objects), ან მასივების მასივი (array of arrays). ნებისმიერი სხვა სტრუქტურა, როგორიცაა ერთი ობიექტი ან ღრმად ჩადგმული იერარქია, გამოიწვევს შეცდომას: “This JSON is invalid or not table‑shaped.”
ობიექტების მასივი წარმოადგენს ყველაზე გავრცელებულ შემთხვევას, განსაკუთრებით API-ებიდან მიღებული მონაცემებისთვის. ამ შემთხვევაში, თითოეული ობიექტი ხდება CSV-ის ერთი სტრიქონი, ხოლო ობიექტის გასაღებები (keys) ხდება სვეტების სათაურები. თუ ობიექტში ჩადგმული ობიექტებია, მათი გასაღებები ბრტყელდება dot-path ნოტაციით.
მასივების მასივი უფრო მარტივი შემთხვევაა, სადათითოეული შიდა მასივი ხდება CSV-ის სტრიქონი, ხოლო მასივის ელემენტები — სვეტები. აქ ობიექტის გასაღებები არ არსებობს, ამიტომ CSV-ის სათაურები არ გენერირდება.
მაგალითი ობიექტების მასივისთვის:
[
{"name": "Alice", "age": 30, "address": {"city": "Tbilisi", "zip": 0101}},
{"name": "Bob", "age": 25, "address": {"city": "Batumi", "zip": 6000}}
]
ეს გადაიქცევა CSV-ში:
name,age,address.city,address.zip
Alice,30,Tbilisi,0101
Bob,25,Batumi,6000
CSV-ის delimiter-ები და მათი მნიშვნელობა
CSV ფორმატის ერთ-ერთი მთავარი მახასიათებელია delimiter-ის (გამყოფი სიმბოლოს) არჩევანი. ინსტრუმენტი გთავაზობთ სამ ვარიანტს: მძიმე, წერტილ-მძიმე ან ტაბულაცია. რატომ არის ეს მნიშვნელოვანი?
- მძიმე: ყველაზე გავრცელებული delimiter, რომელსაც იყენებს Excel-ისა და Google Sheets-ის უმეტესობა. თუმცა, თუ თქვენს JSON-ში მძიმეებია (მაგალითად, ტექსტურ ველებში), მათი quoting-ის წესების დაცვა აუცილებელია.
- წერტილ-მძიმე: გავრცელებულია ევროპის ქვეყნებში, სადაც მძიმა გამოიყენება ათწილადებისთვის. Excel-ის ზოგიერთ ლოკალიზაციაში (მაგ., გერმანული, ფრანგული) ნაგულისხმევი delimiter არის წერტილ-მძიმე.
- ტაბულაცია: იშვიათი, მაგრამ სასარგებლო, როდესაც JSON-ში ხშირად გვხვდება მძიმეები ან წერტილ-მძიმეები.
დელიმიტერის არასწორი არჩევანი იწვევს მონაცემთა ცუდად იმპორტს — მაგალითად, Excel-ში CSV-ის გახსნისას ყველა მონაცემი ერთ სვეტში მოხვდება, ან მძიმეებიანი ტექსტი დაზიანდება. ინსტრუმენტი ავტომატურად იყენებს CSV-ის quoting-ის წესებს: ნებისმიერი მნიშვნელობა, რომელიც შეიცავს delimiter-ს, თუ ახალი ხაზი, ან ბრჭყალებს, ჩასმული იქნება ორმაგ ბრჭყალებში.
JSON-ის ტიპების დაკარგვა CSV-ში
JSON-ის CSV-ად გადაყვანის ერთ-ერთი ყველაზე მნიშვნელოვანი შედეგია ტიპების დაკარგვა. JSON-ს აქვს მკაფიოდ განსაზღვრული ტიპები:
- string — ტექსტური მონაცემი
- number — რიცხვი (მთელი ან ათწილადი)
- boolean — true ან false
- null — ცარიელი მნიშვნელობა
- object — ჩადგმული ობიექტი
- array — მასივი
CSV-ში ყველა მნიშვნელობა ხდება string (ტექსტი). ეს ნიშნავს, რომ:
trueგადაიქცევა ტექსტად"true"123გადაიქცევა ტექსტად"123"nullგადაიქცევა ცარიელ ველადaddress.city(ჩადგმული ობიექტი) გახდება მხოლოდ ველი CSV-ში
განსაკუთრებული ყურადღება მიაქციეთ წამყვან ნულებს. JSON-ში 0101 ინტერპრეტირებულია როგორც რიცხვი 101, ხოლო CSV-ში ის გახდება 101. თუ გჭირდებათ წამყვანი ნულები (მაგ., ZIP კოდები), JSON-ის წყაროში ისინი უნდა იყოს string-ის ფორმატში — "0101".
კლიენტ-მხარის დამუშავების უპირატესობები
ინსტრუმენტის მთავარი მახასიათებელია კლიენტ-მხარის დამუშავება. ეს ნიშნავს, რომ თქვენი JSON ფაილი არასოდეს ტოვებს თქვენს ბრაუზერს. რატომ არის ეს მნიშვნელოვანი?
- კონფიდენციალურობა: API-ებიდან მიღებული JSON შეიძლება შეიცავდენს მგრძნობიარე ინფორმაციას (პერსონალური მონაცემები, ბიზნეს-საიდუმლოებები). ლოკალური დამუშავება უზრუნველყოფს, რომ ეს მონაცემები არ გადამისამართდება მესამე მხარის სერვერზე.
- სისწრაფე: გარდაქმნა ხდება მყისიერად, ინტერნეტ-კავშირის მიუხედავად. მხოლოდ ფაილის ზომა და ბრაუზერის სიმძლავრე მოქმედებს სიჩქარეზე.
- უსაფრთხოება: არ არსებობს მონაცემთა მოპარვის ან ჰაკერების შესაძლებლობა.
თუმცა, კლიენტ-მხარის დამუშავებას აქვს ლიმიტები.
- ფაილის ზომის ლიმიტი: თუ ფაილი 8 MB-ზე დიდია, გამოჩნდება შეცდომა: “This file is too large. Use a file under ‹max›.”
- სტრიქონების ლიმიტი: მაქსიმუმ 10,000 სტრიქონი.
- სვეტების ლიმიტი: მაქსიმუმ 200 სვეტი.
თუ გარდაქმნას 12 წამზე მეტი დასჭირდება, ინსტრუმენტი შეაჩერებს მას შეტყობინებით: “ეს კონვერტაცია ძალიან დიდ დროს მოითხოვს. სცადეთ უფრო მცირე ფაილი.”
CSV-ში გარდაქმნის შეცდომები და მათი მიზეზები
ინსტრუმენტი ამოწმებს რამდენიმე პირობას, რომლებიც გარდაქმნის წარმატებას უზრუნველყოფს. ყველაზე გავრცელებული შეცდომები:
| შეცდომა | მიზეზი |
|---|---|
| “Choose a CSV, JSON or XLSX file.” | აირჩია არასწორი ფაილის ფორმატი |
| “This file is too large. Use a file under ‹max›.” | ფაილი ძალიან დიდია |
| “This JSON is invalid or not table‑shaped.” | JSON-ის სტრუქტურა არ წარმოადგენს ცხრილის ფორმას |
| “Could not convert this file.” | ზოგადი შეცდომა |
| “ეს კონვერტაცია ძალიან დიდ დროს მოითხოვს. სცადეთ უფრო მცირე ფაილი.” | გარდაქმნას ძალიან დიდი დრო სჭირდება |
| “ამ ფაილს არ გააჩნია ცხრილის ხაზები.” | ფაილს არ აქვს ცხრილის სტრიქონები |
| “Conversion cancelled.” | მომხმარებელმა შეაჩერა გარდაქმნა |
JSON-ის “table‑shaped” სტატუსის შემოწმება მარტივია: ფაილი უნდა დაიწყოს [ (მასივი) და შეიცავდეს მსგავსი სტრუქტურის ელემენტებს. გაითვალისწინეთ, რომ ინსტრუმენტი არ ითვლის ფორმულებს ან კოდს — ის მხოლოდ ხილულ მნიშვნელობებს გარდაქმნის.
ხშირად დასმული კითხვები (FAQ)
1. რატომ იკარგება ჩემი JSON-ის null-ები CSV-ში?
CSV-ს არ გააჩნია null-ის ცნება. ინსტრუმენტი null-ს გადააქცევს ცარიელ ველად.
2. რა უნდა გავაკეთო, თუ ჩემი JSON-ი ძალიან დიდია?
ინსტრუმენტს აქვს ფაილის ზომის ლიმიტი 8 MB. თუ ფაილი აღემატება ამ ზომას, გამოჩნდება შეცდომა: “This file is too large. Use a file under ‹max›.”
3. რატომ იცვლება ჩემი ZIP-კოდი 0101-დან 101-ში?
JSON-ში 0101 ინტერპრეტირებულია როგორც რიცხვი, ამიტომ CSV-ში ის გახდება 101. ZIP-კოდები, ტელეფონის ნომრები და სხვა ID-ები ყოველთვის string-ის ფორმატში უნდა იყოს: "0101".
4. შემიძლია თუ არა CSV-ის ისევ JSON-ად გადაყვანა?
დიახ, მაგრამ ინფორმაცია ტიპებისა და ჩადგმული სტრუქტურის შესახებ დაიკარგება. CSV-დან JSON-ში გარდაქმნისას, ყველა მნიშვნელობა გახდება string-ი, ვიდრე number ან boolean.
5. რა delimiter-ი უნდა ავირჩიო?
თუ CSV-ის გახსნა გსურთ Excel-ში ინგლისური ლოკალური, აირჩიეთ Comma. თუ იყენებთ Excel-ის გერმანულ ან ფრანგულ ვერსიას, აირჩიეთ Semicolon. Tab-ი შესაფერისია, როდესაც JSON-ში ხშირია მძიმეები.
6. რატომ მივიღე "This JSON is invalid or not table‑shaped."?
დარწმუნდით, რომ JSON-ი იწყება [-ით (მასივი) და შეიცავს ობიექტების ან მასივების მასივს. ერთი ობიექტი {...} ან ღრმად ჩადგმული იერარქია არ აკმაყოფილებს ცხრილის ფორმის მოთხოვნას.