JSON से CSV
ऑब्जेक्ट्स की JSON सरणियों को CSV या TSV फ़ॉर्मेट में कनवर्ट करें।
कैसे उपयोग करें
1. इनपुट क्षेत्र में ऑब्जेक्ट का JSON ऐरे (या एकल ऑब्जेक्ट) पेस्ट करें।
2. अपना डिलिमिटर चुनें · CSV के लिए कॉमा, TSV के लिए टैब, या अन्य प्रारूप।
3. CSV आउटपुट जनरेट करने के लिए रूपांतरित करें पर क्लिक करें।
4. क्लिपबोर्ड पर कॉपी करें या फ़ाइल के रूप में डाउनलोड करें।
नेस्टेड ऑब्जेक्ट और ऐरे CSV आउटपुट में JSON स्ट्रिंग्स के रूप में क्रमबद्ध होते हैं। सभी प्रसंस्करण क्लाइंट-साइड है · आपका डेटा कभी आपके डिवाइस से नहीं जाता।
JSON-से-CSV रूपांतरण इतना सामान्य वर्कफ़्लो क्यों है
आधुनिक वेब APIs के लिए JSON प्रमुख पेलोड फ़ॉर्मैट है; तालिकाई डेटा के लिए CSV सबसे न्यूनतम साझा फ़ॉर्मैट है। Excel, Google Sheets, SQL का LOAD DATA, R, Pandas, Tableau, Power BI और लगभग हर ETL पाइपलाइन CSV को सीधे ले लेती है। तो जब किसी API का आउटपुट किसी हितधारक के लिए स्प्रेडशीट में, या विश्लेषण के लिए किसी डेटाबेस में जाना हो, तो किसी न किसी को JSON को पंक्तियों में सपाट करना ही पड़ता है। यह उपकरण वही सपाट करना आपके ब्राउज़र में करता है-न कोई सर्वर ट्रिप, न किसी संवेदनशील डेटा का अपलोड।
CSV फ़ॉर्मैट (RFC 4180)
एक एकल औपचारिक CSV मानक नहीं है, पर RFC 4180 (अक्टूबर 2005, «Common Format and MIME Type for Comma-Separated Values (CSV) Files») उद्योग के पास सबसे क़रीबी विहित संदर्भ है। जिन नियमों पर सब सहमत हैं:
- एक पंक्ति में एक रिकॉर्ड, पंक्तियाँ लाइन ब्रेक से अलग। RFC CRLF कहता है; अधिकांश आधुनिक पार्सर LF भी स्वीकार करते हैं।
- एक रिकॉर्ड के भीतर फ़ील्ड एकल डीलिमिटर वर्ण से अलग होती हैं-विहित रूप में अल्पविराम, पर अर्धविराम, टैब या पाइप क्षेत्रीय एवं विरासत वेरिएंट में आम है।
- हर रिकॉर्ड में फ़ील्ड की संख्या समान होनी चाहिए। न मिले मानों के लिए ख़ाली सेल; अतिरिक्त डीलिमिटर त्रुटि हैं।
- हेडर पंक्ति वैकल्पिक है; यदि है तो वह पहली पंक्ति है।
- अल्पविराम, लाइन ब्रेक या डबल कोट्स वाली फ़ील्ड को अनिवार्य रूप से डबल कोट्स में बंद किया जाना चाहिए।
- क्वोट की हुई फ़ील्ड के अंदर डबल कोट्स को दोहराकर एस्केप किया जाता है:
"She said ""hello"""। - CSV के लिए पंजीकृत MIME प्रकार
text/csvहै।
एक के बजाय चार डीलिमिटर क्यों
डिफ़ॉल्ट अल्पविराम है, पर हर डीलिमिटर एक विशिष्ट समस्या सुलझाता है:
- अल्पविराम (
,)-अमेरिका, ब्रिटेन और अन्य अंग्रेज़ी-भाषी लोकेल्स में मानक। जब OS की क्षेत्रीय सेटिंग अंग्रेज़ी हो, Excel अल्पविराम वाली CSV पढ़ता है। व्यापक टूल इकोसिस्टम मेंapplication/csvका डिफ़ॉल्ट। - अर्धविराम (
;)-महाद्वीपीय यूरोप, लैटिन अमेरिका और जिन इलाक़ों में दशमलव विभाजक अल्पविराम है, वहाँ का व्यावहारिक डिफ़ॉल्ट। Excel OS के लिस्ट विभाजक का उपयोग करता है, इसलिए फ़्रेंच या जर्मन लोकेल का Excel अर्धविराम-विभाजित CSV उत्पन्न करता है। - टैब-TSV (tab-separated values) वैज्ञानिक डेटा, बायोइन्फ़ॉर्मैटिक्स और किसी भी संदर्भ में आम है जहाँ डेटा में स्वयं अल्पविराम हो (मुक्त-पाठ फ़ील्ड, पते)।
- पाइप (
|)-कुछ विरासती एंटरप्राइज़ सिस्टम में पसंदीदा जहाँ डेटा में अल्पविराम, अर्धविराम और टैब-तीनों हो सकते हैं। पहले विकल्प के रूप में शायद ही सही, पर बाक़ी कुछ काम न करने पर उपयोगी।
नेस्टेड JSON को सपाट करने की तीन रणनीतियाँ
JSON पदानुक्रमित है; CSV सपाट है। दोनों के बीच कोई सामान्य-प्रयोजन, बिना-नुक़सान का मैपिंग नहीं है। जब इनपुट में नेस्टेड वस्तुएँ या एरे होते हैं, हर कन्वर्टर को एक चुनाव करना ही पड़ता है:
- JSON स्ट्रिंग के रूप में इनलाइन। नेस्टेड हिस्सा वापस JSON में सीरियलाइज़ कर एक CSV सेल में डाला जाता है। इस उपकरण का डिफ़ॉल्ट तरीक़ा। बिना-नुक़सान; राउंड-ट्रिप-सुरक्षित; उपभोक्ता यदि संरचना चाहे तो अंदरूनी JSON पार्स करेगा।
- डॉटेड-की सपाटीकरण।
{address: {street, city}}कॉलमaddress.streetऔरaddress.cityबन जाता है। Pandas काjson_normalizeयही करता है। विश्लेषकों के लिए साफ़, पर गहराई-से नेस्टेड डेटा में कॉलम की संख्या बढ़ जाती है। - पंक्ति विस्फोट। एक एरे कई पंक्तियाँ बन जाता है, पैरेंट फ़ील्ड दोहराई जाती हैं।
{name: "Alice", tags: ["a", "b"]}दो पंक्तियों में बदलता है-दोनों मेंname=Alice। एक-से-कई संबंधों के लिए सबसे अच्छा; «एक पंक्ति में एक रिकॉर्ड» मानसिक मॉडल चला जाता है।
यदि डॉटेड-की या पंक्ति-विस्फोट आउटपुट चाहिए, चिपकाने से पहले JSON का प्री-प्रोसेस करें-एक छोटे Python/Node स्क्रिप्ट से, या Pandas के json_normalize से।
हेडर, टाइप राउंड-ट्रिप और Excel का ऑटो-फ़ॉर्मैट जाल
JSON में असली टाइप सिस्टम है (संख्या, स्ट्रिंग, बूलियन, null, एरे, ऑब्जेक्ट); CSV में केवल स्ट्रिंग। परिपाटी यह है कि उपभोक्ता संदर्भ से टाइप अनुमानित करे। उपकरण सभी इनपुट ऑब्जेक्ट्स की सभी keys के संघ से हेडर पंक्तियाँ बनाता है, गायब फ़ील्ड को ख़ाली सेल छोड़ता है, बूलियन को true/false लिखता है, और JSON null को ख़ाली सेल लिखता है।
Excel का «मदद» कभी-कभी चोट पहुँचाती है:
- अग्रणी शून्य हटाना।
01234जैसे पोस्टल कोड कॉलम1234संख्या के रूप में खुलते हैं। हल: CSV के अंदर एपोस्ट्रोफ़ी से प्रिफ़िक्स करें ('01234), या Excel के इम्पोर्ट विज़ार्ड में कॉलम टाइप स्पष्ट रूप से Text रखें। - ऑटो-तिथि रूपांतरण। तिथि जैसे दिखने वाले स्ट्रिंग (
3/4/5,Mar-23) चुपचाप बदल जाते हैं। वही समाधान। - वैज्ञानिक संकेतन। लंबे संख्यात्मक ID (क्रेडिट कार्ड संख्या, बड़े पूर्णांक)
1.23E+15बन जाते हैं और सटीकता खो देते हैं। JSON संख्याओं को 253−1 तक सटीक रख सकता है; इससे बड़े के लिए JSON में स्ट्रिंग के रूप में भेजें। - UTF-8 BOM बेमेल। Windows पर Excel डिफ़ॉल्ट रूप से Windows-1252 का उपयोग करता है; बिना BOM के UTF-8 CSV खोलने पर ग़ैर-ASCII वर्ण ख़राब हो जाते हैं (é, ü, å मोजिबेक बन जाते हैं)। फ़ाइल के शुरू में UTF-8 BOM (
) जोड़ने से ठीक हो जाता है। Google Sheets बिना BOM के UTF-8 सही संभालता है, इसलिए BOM प्लैटफ़ॉर्म-विशिष्ट है।
CSV इंजेक्शन-जानने योग्य सुरक्षा-संकेत
यदि कोई CSV Excel या Google Sheets में खुलने वाला है, तो =, +, - या @ से शुरू होने वाली सेल को फ़ॉर्मूला माना जाता है। OWASP का CSV Injection पन्ना इस आक्रमण-वर्ग का दस्तावेज़ है-उपयोगकर्ता-प्रस्तुत फ़ील्ड में =cmd|' /c calc'!A0 जैसा एक दुर्भावनापूर्ण स्ट्रिंग, जब कोई व्यवस्थापक एक्सपोर्ट खोले, कमांड चला सकता है। रक्षात्मक अभ्यास: इन चार वर्णों से शुरू होने वाली किसी भी सेल को एकल उद्धरण से प्रिफ़िक्स करें, या उसे उद्धरणों में + अग्रणी एपोस्ट्रोफ़ी के साथ लपेटें। यदि आप उपयोगकर्ता-उत्पन्न सामग्री निर्यात करते हैं तो जानना ज़रूरी है।
कन्वर्टर द्वारा संभाले गए सामान्य एज केस
- डीलिमिटर वाली फ़ील्ड-स्वचालित रूप से उद्धरणों में। अल्पविराम CSV में
San Francisco, CAबन जाता है"San Francisco, CA"। - लिटरल न्यूलाइन वाली फ़ील्ड-उद्धरणों में; RFC 4180 के अनुसार उद्धरणों के भीतर बहु-पंक्ति सामग्री क़ानूनी है।
- डबल कोट वाली फ़ील्ड-उद्धरणों में, अंदरूनी उद्धरण दोहराकर:
She said "yes"बन जाता है"She said ""yes"""। - ख़ाली एरे और ऑब्जेक्ट-अपनी सेल में क्रमशः
[]और{}के रूप में सीरियलाइज़। - विभिन्न keys वाले रिकॉर्ड-सभी keys का संघ हेडर पंक्ति बनाता है; गायब फ़ील्ड ख़ाली सेल।
- एकल ऑब्जेक्ट बनाम एरे-एक JSON ऑब्जेक्ट एक-पंक्ति CSV बन जाता है।
इस उपकरण का उपयोग कब करें
- API प्रतिक्रियाओं का निर्यात उन हितधारकों के लिए जो छाँटने-फ़िल्टर करने योग्य स्प्रेडशीट चाहते हैं।
- JSON डेटा का थोक-आयात SQL डेटाबेस में
LOAD DATA INFILE(MySQL) याCOPY(PostgreSQL) के माध्यम से। दोनों CSV-स्वरूप इनपुट चाहते हैं। - त्वरित डेटा विश्लेषण Excel, Google Sheets, Pandas, R, Tableau या Power BI में।
- मेलिंग सूचियाँ बनाना-संपर्कों की किसी JSON API प्रतिक्रिया से।
- डेटा माइग्रेशन-उन सिस्टमों के बीच जो API साझा नहीं करते पर दोनों CSV बोलते हैं।
- JSON फ़ाइल को आँख से देखना-जब वह सीधे पढ़ने के लिए बहुत दोहरावपूर्ण हो, स्प्रेडशीट दृश्य अक्सर आसान होता है।
गोपनीयता
CSV निर्यात लगभग हमेशा PII रखते हैं-ग्राहक रिकॉर्ड, कर्मचारी डेटा, लेन-देन लॉग, संपर्क सूची। सर्वर-साइड रूपांतरण हर रिकॉर्ड को किसी तीसरे पक्ष के बुनियादी ढाँचे से गुज़ारता है, जहाँ वह ट्रांज़िट लॉग्स, सर्वर लॉग्स और संभवतः कैश की गई प्रतिक्रियाओं में बसता है। ब्राउज़र-आधारित रूपांतरण डेटा को आपकी मशीन पर रखता है। यहाँ पूरा सपाट-करो-और-उद्धृत-करो चरण आपके ब्राउज़र में JavaScript में होता है; कुछ भी अपलोड नहीं होता।
सामान्य ग़लतियाँ
- दर्शक के लिए ग़लत डीलिमिटर। फ़्रेंच Excel उपयोगकर्ता को अल्पविराम-CSV भेजने से एक-कॉलम वाली फ़ाइल मिलती है। डीलिमिटर को प्राप्तकर्ता की लोकेल से मिलाएँ।
- एरे की बजाय एकल ऑब्जेक्ट चिपकाना। एकल ऑब्जेक्ट keys-से-हेडर वाली एक-पंक्ति CSV में बदलता है। कई रिकॉर्ड के लिए उन्हें एरे में लपेटें।
- Pandas-शैली सपाटीकरण की अपेक्षा। इस उपकरण में नेस्टेड ऑब्जेक्ट सेल्स के अंदर JSON स्ट्रिंग के रूप में सीरियलाइज़ होते हैं। यदि
address.streetकॉलम चाहिए, पहले सपाट करें। - बहुत बड़ी संख्याओं के लिए CSV उपयोग करना। JSON 253−1 (लगभग 9 क्वाड्रिलियन) तक के पूर्णांकों को सुरक्षित रूप से दर्शाता है। उससे आगे, स्ट्रिंग के रूप में भेजें। CSV द्वारा संरक्षित होने पर भी Excel लंबे संख्यात्मक ID बिगाड़ देगा।
- एन्कोडिंग सोचे बिना Excel में खोलना। Windows पर Excel के लिए ग़ैर-ASCII वर्णों को UTF-8 BOM चाहिए; Google Sheets और आधुनिक Excel for Web को नहीं।
- फ़ॉर्मूला उपसर्ग साफ़ किए बिना उपयोगकर्ता-उत्पन्न पाठ निर्यात करना। Excel और Sheets में
=,+,-या@से शुरू होने वाली सेल फ़ॉर्मूले हैं। CSV इंजेक्शन एक्सपोर्ट फ़ाइल खोलने वाले व्यवस्थापकों के विरुद्ध वास्तविक हमला है।
अक्सर पूछे जाने वाले प्रश्न
मेरे JSON में नेस्टेड ऑब्जेक्ट हैं। उन्हें कैसे संभाला जाता है?
हर नेस्टेड ऑब्जेक्ट या एरे अपनी CSV सेल के अंदर JSON स्ट्रिंग के रूप में सीरियलाइज़ होता है। तो {user: {name: "Alice", role: "admin"}} एक user नामक कॉलम बनता है जिसमें {"name":"Alice","role":"admin"} होता है। यह बिना नुक़सान राउंड-ट्रिप करता है। यदि आपको user.name और user.role अलग कॉलम चाहिए, Pandas के json_normalize या एक छोटे फ़्लैटन स्क्रिप्ट से प्री-प्रोसेस करें।
मेरे ग़ैर-अंग्रेज़ी वर्ण Excel में टूटे क्यों दिखते हैं?
Windows पर Excel डिफ़ॉल्ट रूप से CSV को Windows-1252 में खोलता है। बाइट ऑर्डर मार्क (BOM) के बिना UTF-8 CSV मोजिबेक जैसा (é → é) दिखता है। समाधान: या तो फ़ाइल को UTF-8 BOM के साथ सहेजें, या Excel के Data → From Text आयात विज़ार्ड का उपयोग करें और UTF-8 स्पष्ट रूप से चुनें, या फ़ाइल को Google Sheets में खोलें, जो बिना BOM के UTF-8 को सही ढंग से संभालता है।
क्या उपकरण फ़ील्ड के अंदर अल्पविरामों को संभालता है?
हाँ। RFC 4180 के अनुसार, डीलिमिटर, लाइन ब्रेक या डबल कोट्स वाली फ़ील्डें स्वचालित रूप से डबल कोट्स में बंद की जाती हैं। अंदरूनी डबल कोट्स को दोहराकर एस्केप किया जाता है। तो San Francisco, CA बन जाता है "San Francisco, CA" और She said "hi" बन जाता है "She said ""hi"""।
क्या मेरा JSON किसी सर्वर पर भेजा जाता है?
नहीं। रूपांतरण पूरी तरह आपके ब्राउज़र में चलता है। टेक्स्ट-एरिया की सामग्री कहीं प्रेषित, लॉग या संग्रहीत नहीं होती। यह इसलिए मायने रखता है क्योंकि निर्यातित रिकॉर्ड अक्सर PII-ग्राहक डेटा, कर्मचारी जानकारी, लेन-देन इतिहास-रखते हैं, जिन्हें आप किसी और के बुनियादी ढाँचे में बहाते नहीं देखना चाहते।
क्या मुझे टैब-विभाजित आउटपुट (TSV) मिल सकता है?
हाँ-डीलिमिटर ड्रॉपडाउन में «Tab» चुनें। TSV तब सही विकल्प है जब आपके डेटा में अल्पविराम हों (पते, मुक्त-पाठ फ़ील्ड, हज़ार-पृथक्करण वाले वित्तीय डेटा) और आप हर दूसरी सेल को उद्धरण में नहीं लपेटना चाहते। कई बायोइन्फ़ॉर्मैटिक्स और वैज्ञानिक डेटा फ़ॉर्मैट डिफ़ॉल्ट रूप से TSV होते हैं।
आकार सीमा क्या है?
जो आपका ब्राउज़र संभाल सके। कोई सर्वर-साइड सीमा नहीं क्योंकि कोई सर्वर शामिल नहीं है। एक आधुनिक डिवाइस पर JSON के दर्जनों मेगाबाइट एक-दो सेकंड में बदल जाते हैं; सैकड़ों मेगाबाइट के पेलोड धीमे होने लगते हैं। बहुत बड़े डेटासेट के लिए, उन्हें बैच में बाँटें या कमांड-लाइन पर स्ट्रीमिंग कन्वर्टर पर जाएँ।