सीधे कंटेंट पर जाएं

CSV को JSON में बदलें

CSV फ़ाइल या पेस्ट की गई टेबल को साफ़ JSON में बदलें — नंबर और बूलियन सही टाइप में, डॉट वाले हेडर से बने नेस्टेड ऑब्जेक्ट, और ठीक वही आकार जो आपका कोड चाहता है।

  • कभी स्टोर नहीं होती
  • न कतार, न इंतज़ार
  • साइनअप नहीं, वॉटरमार्क नहीं

यह कैसे काम करता है

1

CSV जोड़ें

.csv या .tsv फ़ाइल यहां छोड़ें, या डेटा पेस्ट करें। डेलिमिटर और एन्कोडिंग आपके लिए पहचान ली जाती हैं।

2

आकार चुनें

ऑब्जेक्ट की ऐरे, ऐरे की ऐरे, पहले कॉलम से की किया गया ऑब्जेक्ट, या JSON Lines — साथ में टाइप, ख़ाली वैल्यू और इंडेंटेशन।

3

कॉपी या डाउनलोड करें

JSON को क्लिपबोर्ड पर कॉपी करें या .json फ़ाइल के रूप में सेव करें।

जहां CSV जितनी दिखती है उससे ज़्यादा अस्पष्ट है

CSV का कोई असली मानक नहीं है — 2005 का एक सलाह वाला स्पेसिफ़िकेशन है जो बताता है कि ज़्यादातर टूल क्या करते हैं, और ढेर सारा सॉफ़्टवेयर है जो कुछ और करता है। इसलिए पहला काम यह पता करना है कि फ़ाइल असल में क्या है: वैल्यू कॉमा, सेमीकोलन या टैब से अलग हैं (यूरोपीय लोकेल सेमीकोलन एक्सपोर्ट करते हैं, क्योंकि वहां कॉमा दशमलव विभाजक है), पहली पंक्ति हेडर है या नहीं, और कोटिंग कैसे की गई है। कोट किए गए फ़ील्ड में नियम से कॉमा, नई लाइनें और दोहरे कोट मार्क हो सकते हैं, इसीलिए कॉमा पर तोड़ना इसे पढ़ने का ग़लत तरीक़ा है और इसीलिए भोला-भाला पार्सर पते वाली हर फ़ाइल बिगाड़ देता है।

टाइप दूसरा काम है, और JSON की ऐसी राय है जो CSV की नहीं। CSV सेल में टेक्स्ट होता है और कुछ नहीं; JSON नंबर, स्ट्रिंग, बूलियन और null में फ़र्क़ करता है। किसी को तय करना होता है कि कौन क्या है, और जो फ़ैसले मायने रखते हैं वही ग़लत होते हैं: पोस्टकोड, फ़ोन नंबर या अकाउंट रेफ़रेंस में शुरुआती ज़ीरो मायने रखता है, इसलिए 01234 जैसी वैल्यू को नंबर 1234 बनने के बजाय स्ट्रिंग ही रहना चाहिए। यही बात लंबे आइडेंटिफ़ायर पर लागू होती है, जो लगभग नौ क्वाड्रिलियन के बाद JSON नंबर के रूप में सटीकता खो देते हैं।

तारीख़ें उसी टेक्स्ट के रूप में रहती हैं जो वे थीं, क्योंकि JSON में तारीख़ का कोई टाइप नहीं है। 2024-03-05 स्ट्रिंग “2024-03-05” के रूप में आता है, और यह कमी नहीं, ईमानदार जवाब है — दूसरा रास्ता अंदाज़ा है, और अंदाज़े से ही 03/05/2024 एक देश में मार्च और दूसरे में मई बन जाता है। इन्हें बदलना उस चीज़ का फ़ैसला है जो JSON इस्तेमाल करेगी, क्योंकि उसे पता है कि उसे कौन-सा फ़ॉर्मैट चाहिए।

एन्कोडिंग आख़िरी चुपचाप होने वाली नाकामी है। CSV अपनी कैरेक्टर एन्कोडिंग का कोई ज़िक्र नहीं रखती, इसलिए Windows-1252 में सेव की गई और UTF-8 के रूप में पढ़ी गई फ़ाइल ठीक उन्हीं पंक्तियों में उलटे-पुलटे अक्षर दिखाती है जिनमें एक्सेंट वाले नाम हैं — और शुरुआत का बाइट ऑर्डर मार्क, जो Excel जोड़ता है, अगर संभाला न जाए तो पहले फ़ील्ड के नाम में फ़ालतू कैरेक्टर के रूप में दिखता है। ये दोनों किसी कन्वर्टर की नहीं, CSV की ख़ासियतें हैं।

जब आपको कुछ और चाहिए

मेमोरी में न समा सकने वाली फ़ाइलों के लिए, या किसी भी स्क्रिप्ट वाले काम के लिए, csvkit इसी मक़सद से बना है: csvjson --stream data.csv धीरे-धीरे कन्वर्ट करता है, csvlook आपको पहले देखने देता है कि आपके पास क्या है, और csvclean उन टेढ़ी-मेढ़ी पंक्तियों को ठीक करता है जो आगे सब कुछ तोड़ देती हैं। Miller — mlr --icsv --ojson cat data.csv — यही काम काफ़ी तेज़ी से करता है और लाइन-दर-लाइन JSON संभालता है, जो ज़्यादातर डेटा पाइपलाइन को असल में चाहिए।

जब सुविधा से ज़्यादा टाइप मायने रखते हों, तो कन्वर्ज़न कोड में करें, टाइप अंदाज़े से नहीं, घोषित करके। Python का pandas स्पष्ट dtype मैपिंग के साथ, या स्कीमा वाली एक छोटी स्क्रिप्ट, यह पक्का करती है कि पोस्टकोड पोस्टकोड रहे और आइडेंटिफ़ायर का हर अंक बचा रहे — जिसकी गारंटी कोई भी अपने-आप होने वाला अनुमान ऐसी फ़ाइल पर नहीं दे सकता जिसे उसने पूरा देखा न हो।

अक्सर पूछे जाने वाले सवाल

मुझे JSON का कौन-सा आकार चुनना चाहिए?

ऑब्जेक्ट की ऐरे — [{"name": "Ada", "age": 36}] — लगभग हर API और लाइब्रेरी के लिए ठीक है। ऐरे की ऐरे सबसे छोटी होती है। की वाला ऑब्जेक्ट कोड को ID से रिकॉर्ड ढूंढने देता है। JSON Lines हर लाइन में एक रिकॉर्ड रखता है, स्ट्रीमिंग टूल, BigQuery और लॉग पाइपलाइन के लिए।

नंबर और बूलियन कैसे तय होते हैं?

हर कॉलम के लिए एक बार: कोई कॉलम तभी नंबर बनता है जब उसकी हर वैल्यू नंबर हो, इसलिए “007” और 7 कभी एक ही की के नीचे मिले-जुले नहीं आते। शुरुआती ज़ीरो वाली वैल्यू, और JavaScript के ठीक-ठीक संभाल सकने से लंबी ID, स्ट्रिंग ही रहती हैं। true और false बूलियन बनते हैं, और ख़ाली सेल null बनते हैं — या ख़ाली स्ट्रिंग, या छोड़ दिए जाते हैं, जैसा आप चाहें।

क्या यह नेस्टेड JSON बना सकता है?

हां। नेस्टिंग चालू होने पर address.city जैसा हेडर {"address": {"city": …}} बन जाता है, और tags.0, tags.1 एक ऐरे बन जाते हैं।

क्या मेरा डेटा कहीं स्टोर होता है?

नहीं। कुछ भी कहीं भेजा नहीं जाता और कुछ भी स्टोर नहीं होता।

सेमीकोलन, टैब और दूसरी एन्कोडिंग का क्या?

कॉमा, सेमीकोलन, टैब और पाइप अपने-आप पहचाने जाते हैं, और UTF-8, UTF-16 और पुरानी Windows एन्कोडिंग भी, इसलिए एक्सेंट वाला और गैर-लैटिन टेक्स्ट सही-सलामत आता है।

डुप्लिकेट या ख़ाली कॉलम नामों का क्या?

डुप्लिकेट नामों को एक नंबर मिलता है (name, name_2) और ख़ाली हेडर को उसकी जगह के हिसाब से नाम (column_3), ताकि कोई वैल्यू ओवरराइट न हो और आपको बताया जाए कि क्या बदला।

ध्यान दें: तारीख़ें आपकी फ़ाइल वाले टेक्स्ट के रूप में ही रहती हैं, क्योंकि JSON में तारीख़ का कोई टाइप नहीं है। बहुत बड़ी फ़ाइलें आपके ब्राउज़र की मेमोरी से सीमित होती हैं।

यह टूल अपनी वेबसाइट पर लगाएं

किसी भी ब्लॉग, क्लास पेज या हेल्प आर्टिकल के लिए मुफ़्त। एक स्निपेट पेस्ट करें और आपके विज़िटर इसे सीधे आपके पेज पर इस्तेमाल कर सकेंगे।