JSON, CSV, YAML और XML के बीच डेटा बदलने पर क्या बदलता है?
चारों फ़ॉर्मेट डेटा को अलग तरह से मॉडल करते हैं: JSON और YAML नेस्टिंग व टाइप रखते हैं, CSV स्ट्रिंग की सपाट तालिका है, और XML एलिमेंट व एट्रिब्यूट में फ़र्क करता है। इसलिए कन्वर्टर को फ़ैसले लेने पड़ते हैं — नेस्टेड ऑब्जेक्ट कॉलम में कैसे सपाट हों, "42" और "true" का टाइप क्या हो, एट्रिब्यूट कहाँ जाएँ — और सही फ़ैसला उस पर निर्भर है जो रिसीविंग सिस्टम अपेक्षित करता है।
JSON से CSV कैसे इस्तेमाल करें
- ऑब्जेक्ट का JSON ऐरे पेस्ट करें।
- डिलिमिटर चुनें और तय करें कि नेस्टेड कीज़ समतल करनी हैं या नहीं।
- झलक तालिका जाँचें, फिर CSV कॉपी करें या डाउनलोड करें।
JSON से CSV की खूबियाँ
- ऑब्जेक्ट के ऐरे (या { "data": [...] } जैसे API एनवेलप) को CSV में बदलता है
- नेस्टेड ऑब्जेक्ट और ऐरे को डॉट-नोटेशन कॉलम में समतल करता है
- कॉमा, सेमीकोलन, टैब या पाइप डिलिमिटर और वैकल्पिक CRLF लाइन एंडिंग
- कॉमा, कोट्स और न्यूलाइन के लिए RFC 4180 क्वोटिंग
- पंक्ति/कॉलम के आँकड़े और पहली पंक्तियों की तालिका झलक
- Excel या Google Sheets के लिए तैयार .csv डाउनलोड
JSON से CSV का उदाहरण
नेस्टेड पते वाले ग्राहक
इनपुट:
[{"id":1,"name":"Omar","address":{"city":"Riyadh"}},{"id":2,"name":"Sara, J.","address":{"city":"Jeddah"}}]आउटपुट:
id,name,address.city
1,Omar,Riyadh
2,"Sara, J.",JeddahJSON से CSV के बारे में अक्सर पूछे जाने वाले सवाल
किस तरह का इनपुट अपेक्षित है?
ऑब्जेक्ट का ऐरे सबसे अच्छा काम करता है — हर ऑब्जेक्ट एक पंक्ति बनता है और सभी कीज़ का संघ हेडर बनता है। अकेला ऑब्जेक्ट एक पंक्ति बनता है, और { "data": [...] } जैसे API एनवेलप अपने आप खोल दिए जाते हैं।
नेस्टेड ऑब्जेक्ट और ऐरे कैसे संभाले जाते हैं?
उन्हें address.city और tags.0 जैसे डॉट-नोटेशन कॉलम में समतल कर दिया जाता है। समतल करना बंद कर दें तो नेस्टेड वैल्यू एक ही सेल में JSON स्ट्रिंग के रूप में रहती हैं।
क्या Excel फ़ाइल सही खोलेगा?
हाँ। जिन फ़ील्ड में डिलिमिटर, कोट्स या न्यूलाइन हों उन्हें RFC 4180 के अनुसार कोट किया जाता है। अगर आपके Excel लोकेल में दशमलव विभाजक कॉमा है तो सेमीकोलन डिलिमिटर चुनें।
जब पंक्तियों में अलग-अलग कीज़ हों तो क्या होता है?
छूटी हुई वैल्यू खाली सेल के रूप में लिखी जाती हैं, इसलिए हर पंक्ति में कॉलम की संख्या एक जैसी रहती है।
तकनीकी नोट्स
toRowObjects rows बनाता है: objects का array सीधा map होता है, arrays का array column1…n बनता है, primitive value कॉलम में जाते हैं, और अकेला object सिर्फ़ data, items, results, rows या records array होने पर खुलता है (इसी क्रम में)। flattenJson key और array index दोनों के लिए dot लगाता है (tags.0); ख़ाली object/array {} और [] रहते हैं। Header सभी rows की keys का union है, पहली बार दिखने के क्रम में।
escapeCsvField cell लिखता है: कोट तभी लगते हैं जब फ़ील्ड में चुना delimiter, डबल कोट, CR/LF या आगे-पीछे whitespace हो, अंदरूनी कोट RFC 4180 के मुताबिक़ दोहराए जाते हैं। संख्याएँ JavaScript की तरह छपती हैं (1e21 → 1e+21, 0.1 + 0.2 → 0.30000000000000004), null ख़ाली cell बनता है, और न UTF-8 BOM जुड़ता है न आख़िरी newline। शुरुआत के =, +, - या @ neutralise नहीं होते, इसलिए अविश्वसनीय डेटा spreadsheet में खोलने से पहले CSV-injection नीति लागू करें।
संदर्भ
- RFC 8259: The JavaScript Object Notation (JSON) Data Interchange FormatJSON का व्याकरण: ऑब्जेक्ट, ऐरे, स्ट्रिंग, नंबर, तीन लिटरल और इंटरचेंज एन्कोडिंग के रूप में UTF-8।
- RFC 4180: Common Format and MIME Type for Comma-Separated Values (CSV) FilesCSV के आम नियम: कॉमा सेपरेटर, CRLF लाइन एंड, और कॉमा, कोट या लाइन ब्रेक वाले फ़ील्ड की क्वोटिंग।
- YAML Ain't Markup Language (YAML™) version 1.2.2YAML 1.2 का डेटा मॉडल और सिंटैक्स, और JSON से उसका संबंध (हर JSON दस्तावेज़ वैध YAML 1.2 है)।