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») उद्योग के पास सबसे क़रीबी विहित संदर्भ है। जिन नियमों पर सब सहमत हैं:

एक के बजाय चार डीलिमिटर क्यों

डिफ़ॉल्ट अल्पविराम है, पर हर डीलिमिटर एक विशिष्ट समस्या सुलझाता है:

नेस्टेड JSON को सपाट करने की तीन रणनीतियाँ

JSON पदानुक्रमित है; CSV सपाट है। दोनों के बीच कोई सामान्य-प्रयोजन, बिना-नुक़सान का मैपिंग नहीं है। जब इनपुट में नेस्टेड वस्तुएँ या एरे होते हैं, हर कन्वर्टर को एक चुनाव करना ही पड़ता है:

  1. JSON स्ट्रिंग के रूप में इनलाइन। नेस्टेड हिस्सा वापस JSON में सीरियलाइज़ कर एक CSV सेल में डाला जाता है। इस उपकरण का डिफ़ॉल्ट तरीक़ा। बिना-नुक़सान; राउंड-ट्रिप-सुरक्षित; उपभोक्ता यदि संरचना चाहे तो अंदरूनी JSON पार्स करेगा।
  2. डॉटेड-की सपाटीकरण। {address: {street, city}} कॉलम address.street और address.city बन जाता है। Pandas का json_normalize यही करता है। विश्लेषकों के लिए साफ़, पर गहराई-से नेस्टेड डेटा में कॉलम की संख्या बढ़ जाती है।
  3. पंक्ति विस्फोट। एक एरे कई पंक्तियाँ बन जाता है, पैरेंट फ़ील्ड दोहराई जाती हैं। {name: "Alice", tags: ["a", "b"]} दो पंक्तियों में बदलता है-दोनों में name=Alice। एक-से-कई संबंधों के लिए सबसे अच्छा; «एक पंक्ति में एक रिकॉर्ड» मानसिक मॉडल चला जाता है।

यदि डॉटेड-की या पंक्ति-विस्फोट आउटपुट चाहिए, चिपकाने से पहले JSON का प्री-प्रोसेस करें-एक छोटे Python/Node स्क्रिप्ट से, या Pandas के json_normalize से।

हेडर, टाइप राउंड-ट्रिप और Excel का ऑटो-फ़ॉर्मैट जाल

JSON में असली टाइप सिस्टम है (संख्या, स्ट्रिंग, बूलियन, null, एरे, ऑब्जेक्ट); CSV में केवल स्ट्रिंग। परिपाटी यह है कि उपभोक्ता संदर्भ से टाइप अनुमानित करे। उपकरण सभी इनपुट ऑब्जेक्ट्स की सभी keys के संघ से हेडर पंक्तियाँ बनाता है, गायब फ़ील्ड को ख़ाली सेल छोड़ता है, बूलियन को true/false लिखता है, और JSON null को ख़ाली सेल लिखता है।

Excel का «मदद» कभी-कभी चोट पहुँचाती है:

CSV इंजेक्शन-जानने योग्य सुरक्षा-संकेत

यदि कोई CSV Excel या Google Sheets में खुलने वाला है, तो =, +, - या @ से शुरू होने वाली सेल को फ़ॉर्मूला माना जाता है। OWASP का CSV Injection पन्ना इस आक्रमण-वर्ग का दस्तावेज़ है-उपयोगकर्ता-प्रस्तुत फ़ील्ड में =cmd|' /c calc'!A0 जैसा एक दुर्भावनापूर्ण स्ट्रिंग, जब कोई व्यवस्थापक एक्सपोर्ट खोले, कमांड चला सकता है। रक्षात्मक अभ्यास: इन चार वर्णों से शुरू होने वाली किसी भी सेल को एकल उद्धरण से प्रिफ़िक्स करें, या उसे उद्धरणों में + अग्रणी एपोस्ट्रोफ़ी के साथ लपेटें। यदि आप उपयोगकर्ता-उत्पन्न सामग्री निर्यात करते हैं तो जानना ज़रूरी है।

कन्वर्टर द्वारा संभाले गए सामान्य एज केस

इस उपकरण का उपयोग कब करें

गोपनीयता

CSV निर्यात लगभग हमेशा PII रखते हैं-ग्राहक रिकॉर्ड, कर्मचारी डेटा, लेन-देन लॉग, संपर्क सूची। सर्वर-साइड रूपांतरण हर रिकॉर्ड को किसी तीसरे पक्ष के बुनियादी ढाँचे से गुज़ारता है, जहाँ वह ट्रांज़िट लॉग्स, सर्वर लॉग्स और संभवतः कैश की गई प्रतिक्रियाओं में बसता है। ब्राउज़र-आधारित रूपांतरण डेटा को आपकी मशीन पर रखता है। यहाँ पूरा सपाट-करो-और-उद्धृत-करो चरण आपके ब्राउज़र में JavaScript में होता है; कुछ भी अपलोड नहीं होता।

सामान्य ग़लतियाँ

  1. दर्शक के लिए ग़लत डीलिमिटर। फ़्रेंच Excel उपयोगकर्ता को अल्पविराम-CSV भेजने से एक-कॉलम वाली फ़ाइल मिलती है। डीलिमिटर को प्राप्तकर्ता की लोकेल से मिलाएँ।
  2. एरे की बजाय एकल ऑब्जेक्ट चिपकाना। एकल ऑब्जेक्ट keys-से-हेडर वाली एक-पंक्ति CSV में बदलता है। कई रिकॉर्ड के लिए उन्हें एरे में लपेटें।
  3. Pandas-शैली सपाटीकरण की अपेक्षा। इस उपकरण में नेस्टेड ऑब्जेक्ट सेल्स के अंदर JSON स्ट्रिंग के रूप में सीरियलाइज़ होते हैं। यदि address.street कॉलम चाहिए, पहले सपाट करें।
  4. बहुत बड़ी संख्याओं के लिए CSV उपयोग करना। JSON 253−1 (लगभग 9 क्वाड्रिलियन) तक के पूर्णांकों को सुरक्षित रूप से दर्शाता है। उससे आगे, स्ट्रिंग के रूप में भेजें। CSV द्वारा संरक्षित होने पर भी Excel लंबे संख्यात्मक ID बिगाड़ देगा।
  5. एन्कोडिंग सोचे बिना Excel में खोलना। Windows पर Excel के लिए ग़ैर-ASCII वर्णों को UTF-8 BOM चाहिए; Google Sheets और आधुनिक Excel for Web को नहीं।
  6. फ़ॉर्मूला उपसर्ग साफ़ किए बिना उपयोगकर्ता-उत्पन्न पाठ निर्यात करना। 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 के दर्जनों मेगाबाइट एक-दो सेकंड में बदल जाते हैं; सैकड़ों मेगाबाइट के पेलोड धीमे होने लगते हैं। बहुत बड़े डेटासेट के लिए, उन्हें बैच में बाँटें या कमांड-लाइन पर स्ट्रीमिंग कन्वर्टर पर जाएँ।

संबंधित टूल