आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
यहाँ आप XLSX को JSON में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।
एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।
ये एक के बाद एक बदलती हैं और साथ में एक ZIP बनकर उतरती हैं।
XLSX से JSON
यह कन्वर्ज़न इसलिए मौजूद है कि हर संगठन में एक ही पैटर्न दोहराता है: किसी चीज़ का असली संस्करण — रेट-लिस्ट, प्रोडक्ट-कैटलॉग, अनुवाद-तालिका, खुलने-बंद होने के समय की सूची — किसी ऐसे व्यक्ति की स्प्रेडशीट में रहता है जो डेवलपर नहीं, और उसे किसी प्रोग्राम तक पहुँचना है जो डेटा चाहता है।
यह पूरी तरह समझदार व्यवस्था है। स्प्रेडशीट अच्छा संपादन-इंटरफ़ेस है, बिज़नेस-उपयोगकर्ता उसे पहले से जानते हैं, और उसे बदलने के लिए कोई छोटा एडमिन-टूल बनाना शायद ही मेहनत के क़ाबिल हो। चाहिए बस सीमा पर एक भरोसेमंद कन्वर्ज़न, और यही यहाँ का पूरा काम है।
नक़्शा साफ़ है। पहली पंक्ति हेडर मानी जाती है और की-नाम देती है; उसके बाद हर पंक्ति एक ऑब्जेक्ट बनती है; हर कोशिका उस ऑब्जेक्ट पर एक मान बनती है। नतीजा रिकॉर्ड की सरणी है, जो लगभग हमेशा कोई प्रोग्राम-पढ़ने वाला चाहता है।
हेडर पंक्ति के बारे में जान-बूझकर सोचना काम आता है, क्योंकि वे कोशिकाएँ आपके कोड में की-नाम बनती हैं। छोटा, लोअरकेस, बिना स्पेस, बिना विराम-चिह्न वाली की टाइप करने में सुखद रहती हैं।
कोई स्प्रेडशीट तारीख़ों को तारीख़ की तरह नहीं रखती। वह किसी मूल-बिंदु से दिन गिनने वाली संख्या रखती है, और सेल-फ़ॉर्मेटिंग ही 45678 को स्क्रीन पर तारीख़ जैसा दिखाती है। बदलने पर वही मिलता है जो फ़ाइल में सचमुच है — यानी वह संख्या।
इसका इलाज दो तरीक़ों से जान-बूझकर होता है। स्प्रेडशीट में कॉलम को पाठ के रूप में फ़ॉर्मेट करके ISO तारीख़ें टाइप कीजिए, जो फ़ाइल को हर कन्वर्ज़न में ख़ुद-वर्णनकारी बनाए रखता है। या बदलने के बाद मान बदल लीजिए।
संख्या के रूप में फ़ॉर्मेट की गई कोशिका में रखा कोई पोस्टकोड, प्रोडक्ट-कोड या राष्ट्रीय पहचानकर्ता अपने शुरुआती शून्य पहले ही खो चुका है — Excel ने वह तब किया जब मान टाइप या इम्पोर्ट हुआ, और फ़ाइल में एक संख्या है।
पंद्रह अंकों से आगे के पहचानकर्ता भी floating point में अपने आख़िरी अंक खो देते हैं। कोई कन्वर्टर दोनों को वापस नहीं ला सकता, क्योंकि जानकारी फ़ाइल में है ही नहीं। इलाज ऊपर है: वे कॉलम स्प्रेडशीट में पाठ के रूप में फ़ॉर्मेट होने चाहिए।
फ़ॉर्मूला, और आपको उनके नतीजे मिलते हैं — जो चाहिए भी था, क्योंकि किसी प्रोग्राम को फ़ॉर्मूले से कुछ लेना-देना नहीं। फ़ॉर्मेटिंग, रंग, सशर्त नियम और कॉलम-चौड़ाई — कोई भी डेटा नहीं। चार्ट, टिप्पणियाँ और जुड़ी हुई कोशिकाएँ, जिनका कोई समकक्ष नहीं।
जुड़ी हुई कोशिकाएँ देखने लायक़ हैं। तीन कॉलमों तक फैला जुड़ा हेडर एक की और दो ख़ाली कीज़ वाली ऑब्जेक्ट बनाता है — जो किसी सामान्य दिखने वाली शीट से निकला अजीब दिखने वाला रिकॉर्ड है। सपाट हेडर, हर कॉलम में एक कोशिका, इस कन्वर्ज़न को उबाऊ बनाते हैं, और उबाऊ ही लक्ष्य है।
आम व्यवस्था है स्प्रेडशीट को संपादन-योग्य स्रोत रखना, JSON में बदलना एक चरण के रूप में करना, और JSON को कोड के साथ कमिट करना। डेटा तब pull request में रिव्यू लायक़, वर्ज़न्ड और build-समय पर उपलब्ध होता है।
दो आदतें इसे समय के साथ चलाए रखती हैं। हर बार एक ही तरीक़े से बदलिए ताकि diff असली बदलाव दिखाए। और कमिट करने से पहले नतीजे को स्कीमा के ख़िलाफ़ वैलिडेट कीजिए, ताकि किसी अच्छे इरादे से बदला कॉलम-नाम चुपचाप ग़ायब फ़ील्ड वाली ऑब्जेक्ट बनाने की बजाय जाँच में पकड़ा जाए।
अगर मंज़िल डेटाबेस-इम्पोर्ट, कोई विश्लेषण-औज़ार या डेटा-पाइपलाइन है, तो CSV आमतौर पर बेहतर बीच का चरण है: यह स्ट्रीम होता है, हर सिस्टम इसे पढ़ता है, और यह ऐसे डेटा पर नेस्टिंग नहीं थोपता जिसमें कोई नेस्टिंग है ही नहीं।
JSON अपनी जगह तब कमाती है जब डेटा ऐप्लिकेशन-कोड में जा रहा हो — फ़्रंट-एंड, कॉन्फ़िग फ़ाइल, API फ़िक्सचर — जहाँ ऑब्जेक्ट की सरणी वही है जो भाषा चाहती है। जो फ़ाइल पढ़ता है उसके हिसाब से चुनिए, कौन-सा फ़ॉर्मेट ज़्यादा आधुनिक लगता है उसके हिसाब से नहीं।
कन्वर्ज़न ब्राउज़र टैब में आपके ही प्रोसेसर पर चलता है, इसलिए कुछ अपलोड नहीं होता और कोई सर्वर कॉपी नहीं रखता। कोई खाता नहीं, कोई क़तार नहीं, कोई दैनिक सीमा नहीं; सीमा प्रति फ़ाइल 100 MB है, एक बार में सौ फ़ाइलें।
यह यहाँ महज़ संयोग नहीं है। जो स्प्रेडशीट लोग बदलते हैं वे आमतौर पर आंतरिक होती हैं: क़ीमतें, मार्जिन, ग्राहक-सूचियाँ, स्टाफ़-रिकॉर्ड, अभी न लॉन्च हुई कैटलॉग। कहीं न भेजना ही उन पर भरोसा करने की सबसे सादी शक़्ल है।
| XLSX | JSON | |
|---|---|---|
| पूरा नाम | Excel वर्कबुक | JavaScript Object Notation |
| फ़ाइल एक्सटेंशन | .xlsx | .json |
| मीडिया टाइप | application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | application/json |
| पहली बार प्रकाशित | 2007 | 2001 |
| प्रकाशक | Microsoft | — |
| विनिर्देश | ECMA-376 | RFC 8259 |
| लाइसेंस | खुला मानक | खुला मानक |
| आज की स्थिति | मौजूदा | मौजूदा |
| ब्राउज़र में खुलता है | कोई ब्राउज़र नहीं | हर ब्राउज़र |
| इसकी जगह विचारणीय | CSV, ODS, Parquet | XML, YAML, NDJSON |
JSON को हर मौजूदा ब्राउज़र खोल लेता है। XLSX को इतने भी नहीं। अगर फ़ाइल किसी वेब पेज या किसी फ़ॉर्म तक जा रही है, तो आम तौर पर इस कन्वर्ज़न की पूरी वजह यही है।
दोनों तरफ़ के प्रोग्राम अलग हैं: XLSX फ़ाइल Microsoft Excel, LibreOffice Calc और Google Sheets में खुलती है और JSON फ़ाइल Visual Studio Code, jq और Postman में — यानी नतीजा जिसके पास जाएगा, उसे दूसरी सूची में से कोई प्रोग्राम चाहिए होगा।
दोनों का निशाना अलग काम है: XLSX का एडिटिंग पर, JSON का प्रोग्रामों के बीच डेटा ले जाना और वेब पर। इस पर सोचना बनता है, क्योंकि जिस वजह से एक मौजूद है, आम तौर पर उसी वजह से दूसरा असुविधाजनक होता है।
XLSX Microsoft का फ़ॉर्मेट है, जो 2007 में आया। यह ECMA-376 में तय किया गया है, और अगर फ़ाइल को उस औज़ार से ज़्यादा जीना है जिसने उसे लिखा, तो यह बात क़ीमती है।
JSON 2001 से चला आ रहा है, और RFC 8259 में तय किया गया है। Visual Studio Code, jq और Postman इस फ़ॉर्मेट को पढ़ लेते है।
नहीं। यह कन्वर्ज़न पूरी तरह आपके ब्राउज़र में होता है, इसलिए फ़ाइल आपके डिवाइस से बाहर नहीं जाती। आप ख़ुद जाँच सकते हैं: डेवलपर टूल्स का नेटवर्क टैब खोलिए और कुछ बदल कर देखिए। आपको पेज ख़ुद दिखेगा और आँकड़ों तथा विज्ञापन के वे अनुरोध दिखेंगे जिनसे इस सेवा का ख़र्च निकलता है — और एक भी ऐसा अनुरोध नहीं जो आपकी फ़ाइल साथ ले जा रहा हो। इस जोड़ी के पीछे SheetJS है, JavaScript में लिखा स्प्रेडशीट का एक पाठक और लेखक; आपका ब्राउज़र इसे एक बार उतारता है और फिर सहेज कर रखता है।
हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100। SheetJS आपकी अपनी मशीन पर उतरता है और वहीं चलता है — इसीलिए उस पर कोई गिनती नहीं है।
XLSX और JSON सामग्री का वर्णन बुनियादी तौर पर अलग-अलग तरीक़ों से करते हैं। इसलिए यह कन्वर्ज़न नक़ल नहीं, पुनर्निर्माण है: ईमानदार, पर बाइट-दर-बाइट एक जैसा नहीं। सिर्फ़ पहली शीट पढ़ी जाती है, और उसमें भी सिर्फ़ मान। सूत्र, फ़ॉर्मैटिंग, कॉलम की चौड़ाई और पहली के बाद की हर शीट पीछे रह जाती है।
कन्वर्ज़न के लिए नहीं: वह उसी ब्राउज़र में होता है जो आपने पहले से खोल रखा है। नतीजा खोलने के लिए उसके बाद वही प्रोग्राम चाहिए जिससे आपका डिवाइस JavaScript Object Notation आम तौर पर दिखाता है।