FlowingDev

JSON से Excel: आम इंसानों के लिए API डेटा को वश में करना

स्ट्रक्चर्ड JSON डेटा (जो अक्सर APIs से मिलता है) को एनालिसिस और रिपोर्टिंग के लिए एक फ्लैट, इंसान के पढ़ने लायक Excel स्प्रेडशीट में बदलने के फ़ंडामेंटल्ज़ सीखें।

टूल आज़माएँ: JSON से एक्सेल

एक लाइन में

यह एक डिजिटल ट्रांसलेटर है जो जटिल, नेस्टेड डेटा ऑब्जेक्ट्स (JSON) की लिस्ट लेता है और उसे एक सरल, टू-डायमेंशनल ग्रिड (यानी Excel स्प्रेडशीट) में फ्लैट कर देता है जिसे कोई भी पढ़ सकता है।

यह क्या समस्या हल करता है

डिजिटल दुनिया के एक कोने में, हमारे पास डेवलपर्स, APIs और डेटाबेस हैं। वे JSON (JavaScript Object Notation) में बात करते हैं, जो एक ऐसी भाषा है जो बहुत अच्छी तरह से स्ट्रक्चर्ड, लाइटवेट और मशीनों के लिए जानकारी इधर-उधर करने के लिए एकदम सही है। यह मॉडर्न वेब सर्विसेज़ की लिंग्वा फ़्रैंका (आम भाषा) है।

दूसरे कोने में, हमारे पास बिज़नेस एनालिस्ट, मार्केटिंग मैनेजर, प्रोडक्ट ओनर और असल में प्रोफेशनल दुनिया का एक बहुत बड़ा हिस्सा है। वे स्प्रेडशीट में बात करते हैं। Excel, Google Sheets—ये टूल्स डेटा को देखने के लिए यूनिवर्सल इंटरफ़ेस हैं। आप बिना कोई कोड लिखे डेटा को सॉर्ट, फ़िल्टर, चार्ट बना सकते हैं और कैलकुलेशन कर सकते हैं।

समस्या यह है कि ये दोनों दुनियाएँ एक ही भाषा नहीं बोलतीं। एक डेवलपर API से 10,000 नए यूज़र्स की लिस्ट निकालता है और उसे कर्ली ब्रेसेस और ब्रैकेट्स से भरी एक शानदार, लेकिन डरावनी टेक्स्ट की दीवार मिलती है। अगर वह उस JSON फ़ाइल को किसी मार्केटिंग मैनेजर को ईमेल करता है जिसने डेटा मांगा था, तो यह उतना ही बेकार है जितना कि उन्हें वॉर्प ड्राइव का स्कीमेटिक थमा देना। यह तकनीकी रूप से सही है, लेकिन जिसे भेजा गया है, उसके लिए पूरी तरह से अपठनीय (unreadable) है।

पहले, इस गैप को भरना एक डेवलपर के लिए मैनुअल और थकाऊ काम होता था। "क्या मुझे पिछली तिमाही में बेचे गए सभी प्रोडक्ट्स की लिस्ट मिल सकती है?" जैसी हर रिक्वेस्ट के लिए, एक डेवलपर को यह सब करना पड़ता था:

  1. डेटा फ़ेच (fetch) करना।
  2. एक कस्टम स्क्रिप्ट (Python, Node.js, या किसी और भाषा में) लिखना।
  3. यह सोचना कि डेटा के सभी नेस्टेड हिस्सों को कैसे हैंडल किया जाए।
  4. उसे CSV या Excel फ़ाइल में एक्सपोर्ट करना।
  5. फ़ाइल को ईमेल करना।

यह प्रोसेस धीमा है, बार-बार करना पड़ता है, और डेवलपर्स को असल फ़ीचर्स बनाने से दूर खींचता है। एक JSON to Excel कन्वर्टर इस पूरे ट्रांसलेशन को ऑटोमेट कर देता है, जिससे एक बार-बार होने वाला डेवलपमेंट टास्क एक सरल, ऑन-डिमांड, सेल्फ़-सर्विस ऑपरेशन में बदल जाता है।

अंदर यह कैसे काम करता है

एक घुमावदार JSON स्ट्रक्चर को पैनकेक की तरह फ्लैट स्प्रेडशीट में बदलना कोई जादू नहीं है, लेकिन इसमें कुछ चालाक स्टेप्स शामिल हैं। चलिए परतों को खोलकर देखते हैं।

स्टेप 1: JSON को Parse करना

सबसे पहले, टूल JSON को एक रॉ टेक्स्ट स्ट्रिंग के रूप में इस्तेमाल नहीं कर सकता। उसे उस टेक्स्ट को एक ऐसे डेटा स्ट्रक्चर में बदलना होगा जिसे वह वास्तव में मैनिपुलेट कर सके, जैसे कि ऑब्जेक्ट्स का एक नेटिव JavaScript एरे। इस स्टेप को पार्सिंग (parsing) कहते हैं।

पार्सिंग के दौरान, टूल एक बाउंसर की तरह भी काम करता है, यह जांचता है कि इनपुट वैलिड है या नहीं। यह सुनिश्चित करता है कि JSON अच्छी तरह से बना है (कोई कॉमा मिसिंग न हो या ब्रैकेट बेमेल न हों) और, इस खास काम के लिए, यह भी कि टॉप-लेवल स्ट्रक्चर ऑब्जेक्ट्स का एक एरे (array) है। { "name": "Bob" } जैसा एक सिंगल ऑब्जेक्ट टेबल नहीं बन सकता, लेकिन [{ "name": "Bob" }] जैसा एरे एक रो वाली टेबल बन सकता है।

// टूल को यह मिलता है: एक स्ट्रिंग।
'[{"id": 1, "user": {"name": "Alice"}}, {"id": 2, "user": {"name": "Bob"}}]'

// पार्स करने के बाद, यह एक ऐसा स्ट्रक्चर बन जाता है जिसे कोड इस्तेमाल कर सकता है।
// (यह एक JavaScript रिप्रेजेंटेशन है)
[
  { id: 1, user: { name: "Alice" } },
  { id: 2, user: { name: "Bob" } }
]

स्टेप 2: Flatten करने की कला

यह पूरे ऑपरेशन का दिल है। एक स्प्रेडशीट एक टू-डायमेंशनल ग्रिड है: रो और कॉलम। एक JSON ऑब्जेक्ट मल्टी-डायमेंशनल हो सकता है, जिसमें ऑब्जेक्ट्स के अंदर दूसरे ऑब्जेक्ट्स नेस्टेड होते हैं। Flattening वह प्रोसेस है जिसमें उस नेस्टेड स्ट्रक्चर को लेकर उसे एक सिंगल डायमेंशन में दिखाया जाता है।

सबसे आम तकनीक है ऑब्जेक्ट को ट्रैवर्स करना और पैरेंट और चाइल्ड कीज़ (keys) को एक सेपरेटर, जैसे डॉट (.) या अंडरस्कोर (_) से जोड़कर नई कीज़ बनाना।

चलिए हमारे एरे से एक सिंगल ऑब्जेक्ट लेते हैं:

{
  "orderId": "ORD-123",
  "customer": {
    "id": 87,
    "contact": {
      "name": "Charlie",
      "email": "charlie@example.com"
    }
  },
  "items": ["Laptop", "Mouse"],
  "shipped": true
}

जब इसे फ्लैट किया जाता है, तो यह एक सरल, वन-लेवल ऑब्जेक्ट बन जाता है। ध्यान दें कि नेस्टेड कीज़ customer.id और customer.contact.email कैसे बनी हैं:

{
  "orderId": "ORD-123",
  "customer.id": 87,
  "customer.contact.name": "Charlie",
  "customer.contact.email": "charlie@example.com",
  "items": "Laptop, Mouse",  // एरे को खास हैंडलिंग की ज़रूरत होती है!
  "shipped": true
}

items के एरे को बस एक कॉमा-सेपरेटेड स्ट्रिंग में जोड़ दिया गया। यह वैल्यूज़ (स्ट्रिंग्स या नंबर्स) के सरल एरे के लिए एक आम रणनीति है, क्योंकि यह आउटपुट को पठनीय बनाए रखती है।

स्टेप 3: Headers खोजना और ग्रिड बनाना

एक स्प्रेडशीट को एक हेडर रो की ज़रूरत होती है। लेकिन क्या होगा अगर आपके JSON में एक ऑब्जेक्ट में एक ऐसी फ़ील्ड हो जो दूसरे में न हो? यह फ्लेक्सिबल API स्कीमा में आम है।

[
  { "id": 1, "name": "Alice", "status": "active" },
  { "id": 2, "name": "Bob", "lastLogin": "2023-10-26" }
]

एक भोला-भाला टूल शायद सिर्फ पहले ऑब्जेक्ट को देखेगा और तय करेगा कि हेडर id, name, और status हैं। फिर वह बॉब के लिए lastLogin फ़ील्ड को पूरी तरह से मिस कर देगा।

एक बढ़िया कन्वर्टर पहले एरे में हर एक ऑब्जेक्ट से होकर गुज़रता है, और उसे मिलने वाली सभी यूनीक फ्लैट कीज़ को इकट्ठा करता है। ऊपर दिए गए उदाहरण के लिए, यह हेडर्स का पूरा सेट खोजेगा: id, name, status, और lastLogin।

हेडर्स डिफाइन होने के बाद, टूल अब ग्रिड बना सकता है। यह हर JSON ऑब्जेक्ट के लिए एक रो बनाता है और हेडर्स की लिस्ट से गुज़रता है। हर हेडर के लिए, यह उस रो के फ्लैट ऑब्जेक्ट में संबंधित वैल्यू की तलाश करता है। अगर वैल्यू मौजूद है, तो वह उसे सेल में डालता है। अगर नहीं है (जैसे एलिस के लिए lastLogin या बॉब के लिए status), तो वह सेल को खाली छोड़ देता है।

id name status lastLogin
1 Alice active
2 Bob 2023-10-26

स्टेप 4: .xlsx फ़ाइल को तैयार करना

आपके पास हेडर्स और डेटा का ग्रिड है। अब क्या? आप इसे बस एक टेक्स्ट फ़ाइल के रूप में सेव करके उसे .xlsx नहीं कह सकते। .xlsx फ़ॉर्मैट (जिसे Office Open XML के नाम से जाना जाता है) आश्चर्यजनक रूप से जटिल है। यह असल में एक ZIP आर्काइव है जिसमें XML फ़ाइलों और फ़ोल्डरों का एक कलेक्शन होता है जो वर्कबुक के कंटेंट, स्ट्रक्चर और स्टाइलिंग का वर्णन करते हैं।

एक अच्छा JSON-to-Excel टूल इस अंतिम स्टेप को संभालने के लिए एक विशेष लाइब्रेरी (जैसे JavaScript की दुनिया में SheetJS) का उपयोग करता है। यह लाइब्रेरी डेटा ग्रिड को लेती है और प्रोग्रामेटिक रूप से सभी आवश्यक XML फ़ाइलें (xl/worksheets/sheet1.xml, [Content_Types].xml, आदि) जेनरेट करती है, जो सेल्स, रो और शेयर्ड स्ट्रिंग्स को डिफाइन करती हैं। फिर यह उन सभी को एक सिंगल ZIP फ़ाइल में बंडल करती है और उसे .xlsx एक्सटेंशन देती है। जब आप उस फ़ाइल पर डबल-क्लिक करते हैं, तो Excel को ठीक-ठीक पता होता है कि उसकी सामग्री को कैसे अनज़िप और इंटरप्रेट करना है ताकि वह स्प्रेडशीट रेंडर हो सके जिसकी आप उम्मीद कर रहे थे।

असल दुनिया की कहानियाँ

उलझी हुई मार्केटिंग एनालिस्ट

सारा, एक मार्केटिंग एनालिस्ट, को यह पता लगाने का काम सौंपा गया था कि उनकी कंपनी के नए SaaS प्रोडक्ट के कौन से फ़ीचर सबसे ज़्यादा लोकप्रिय थे। इंजीनियरिंग टीम ने उसे एक API एंडपॉइंट दिया जो यूज़र एक्टिविटी का एक बड़ा JSON एरे लौटाता था। यह घना, नेस्टेड और उसके लिए पूरी तरह से चकरा देने वाला था। उसने एक डेवलपर से मदद मांगी, लेकिन वह बहुत व्यस्त था। निराश होकर, उसने एक वेब-आधारित JSON to Excel टूल ढूंढा। उसने JSON पेस्ट किया, एक बटन पर क्लिक किया, और एक साफ-सुथरी, व्यवस्थित स्प्रेडशीट डाउनलोड की। एक घंटे के भीतर, उसने पिवट टेबल (pivot tables) और चार्ट बना लिए थे जो दिखा रहे थे कि "रिपोर्टिंग डैशबोर्ड" एंटरप्राइज़ ग्राहकों के बीच हिट था, लेकिन "कोलेबोरेशन फ़ीचर" का मुश्किल से ही इस्तेमाल हो रहा था।

सबक: ये टूल्स नॉन-टेक्निकल टीम के सदस्यों को अपनी डेटा ज़रूरतों को खुद पूरा करने की शक्ति देते हैं, जिससे डेवलपर का समय बचता है और बिज़नेस इनसाइट्स तेज़ी से मिलती हैं।

API प्रोटोटाइप करने वाला डेवलपर

एलेक्स एक ई-कॉमर्स प्लेटफ़ॉर्म के लिए एक नया API बना रहा था। प्रोडक्ट मैनेजर (PM) चाहता था कि एलेक्स के हफ्तों के इम्प्लीमेंटेशन से पहले वह "डेटा देख ले"। एक अस्थायी बैकएंड बनाने के बजाय, एलेक्स ने बस कुछ प्रतिनिधि JSON ऑब्जेक्ट्स का मॉकअप बनाया कि API क्या प्रोड्यूस करेगा—जिसमें नेस्टेड कस्टमर जानकारी, ऑर्डर आइटम्स और शिपिंग डिटेल्स शामिल थीं। उसने इस मॉक JSON को एक कन्वर्टर से गुज़ारा और परिणामी Excel फ़ाइल PM को भेज दी। PM ने तुरंत नोटिस किया कि item_price गायब था और customer_address को कई फ़ील्ड्स में विभाजित किया जाना चाहिए। उन्होंने मिनटों में डिज़ाइन की खामी पकड़ ली।

सबक: एक कन्वर्टर एक शानदार कम्युनिकेशन और प्रोटोटाइपिंग टूल है, जो प्रोडक्शन कोड की एक भी लाइन लिखे जाने से पहले टेक्निकल इम्प्लीमेंटेशन को बिज़नेस की ज़रूरतों के साथ अलाइन करने में मदद करता है।

डेटा माइग्रेशन का सिरदर्द

एक छोटी कंपनी एक पुराने, कस्टम-बिल्ट CRM को बंद कर रही थी और एक बने-बनाए सोल्यूशन पर माइग्रेट कर रही थी। पुराने सिस्टम का एकमात्र एक्सपोर्ट ऑप्शन एक विशाल JSON फ़ाइल थी जिसमें हर ग्राहक का रिकॉर्ड था। नया सिस्टम केवल Excel या CSV के माध्यम से डेटा इम्पोर्ट कर सकता था। JSON बहुत ज़्यादा नेस्टेड था। इस काम के लिए असाइन किया गया डेवलपर एक वन-ऑफ माइग्रेशन स्क्रिप्ट लिखने से डर रहा था—एक ऐसा काम जिसमें कई दिन लगते और वह टूल सिर्फ एक बार इस्तेमाल होता। इसके बजाय, उसने विशाल JSON को मैनेज करने लायक हिस्सों में तोड़ा और हर हिस्से को एक कन्वर्टर से गुज़ारा। फिर उसने परिणामी Excel फ़ाइलों को मिलाया, थोड़ी-बहुत सफ़ाई की, और आधे दिन से भी कम समय में सब कुछ सफलतापूर्वक नए CRM में इम्पोर्ट कर लिया।

सबक: वन-ऑफ डेटा ट्रांसफ़ॉर्मेशन टास्क के लिए, एक डेडिकेटेड कन्वर्टर कस्टम स्क्रिप्ट लिखने और डीबग करने की तुलना में कहीं ज़्यादा कुशल हो सकता है।

आम गलतियाँ और जाल

  • डेटा टाइप्स को नज़रअंदाज़ करना। एक आलसी कन्वर्जन शायद Excel में हर चीज़ को एक स्ट्रिंग में बदल सकता है। नंबर्स टेक्स्ट बन जाते हैं (123 के बजाय "123"), जिससे जोड़ और कैलकुलेशन फेल हो जाते हैं। JSON वैल्यू null एक खाली सेल के बजाय "null" स्ट्रिंग बन सकती है। एक अच्छा टूल टाइप्स का सम्मान करता है, JSON नंबर्स को Excel नंबर्स से, बूलियन्स को TRUE/FALSE से, और null को खाली सेल्स से मैप करता है।
  • ऑब्जेक्ट्स के एरे को गलत तरीके से हैंडल करना। हमने देखा कि सिंपल स्ट्रिंग्स का एरे (["Laptop", "Mouse"]) कैसे जोड़ा जा सकता है। लेकिन ऑब्जेक्ट्स के एरे का क्या, जैसे एक यूज़र के लिए कई एड्रेस? एक खराब टूल शायद सेल में बस "[object Object],[object Object]" आउटपुट कर देगा, जो कि बकवास है। बेहतर टूल शायद डुप्लीकेट रो बना सकते हैं (हर एड्रेस के लिए एक) या उन्हें नंबर्ड कॉलम में फैला सकते हैं (address_0_street, address_1_street), लेकिन आपको यह जानना होगा कि आपका चुना हुआ टूल कैसे व्यवहार करता है।
  • असंगत ऑब्जेक्ट्स के बारे में भूल जाना। अगर आपका कन्वर्टर कॉलम तय करने के लिए सिर्फ पहले ऑब्जेक्ट को देखता है, तो आप डेटा खो देंगे। हमेशा सुनिश्चित करें कि टूल शीट बनाने से पहले हेडर्स की पूरी लिस्ट बनाने के लिए पूरे डेटासेट को स्कैन करता है।
  • इसमें बहुत ज़्यादा बड़ा डेटा डाल देना। ब्राउज़र-आधारित टूल्स की मेमोरी सीमाएँ होती हैं। अगर आप 500 MB की JSON लॉग फ़ाइल को वेब टूल में पेस्ट करने की कोशिश करते हैं, तो आपका ब्राउज़र शायद क्रैश हो जाएगा। वास्तव में बड़े डेटासेट के लिए, एक कमांड-लाइन टूल या एक डेडिकेटेड स्क्रिप्ट अभी भी सही तरीका है।
  • कॉलम के ऑर्डर को मानकर चलना। JSON ऑब्जेक्ट में कीज़ (keys) का क्रम स्पेसिफिकेशन द्वारा गारंटीड नहीं है। हालाँकि आज ज़्यादातर पार्सर सोर्स ऑर्डर बनाए रखते हैं, आपको ऐसा वर्कफ़्लो नहीं बनाना चाहिए जो एक खास क्रम में कॉलम दिखने पर निर्भर हो।

यह आपके रडार पर क्यों होना चाहिए

जब भी डेटा को मशीन की दुनिया से इंसानों की दुनिया में ले जाने की ज़रूरत हो, आपको JSON to Excel कन्वर्टर का उपयोग करने के बारे में सोचना चाहिए। यह आपके टूलकिट का एक fondamental हिस्सा है:

  • API रिस्पॉन्स को नॉन-टेक्निकल सहकर्मियों के साथ जल्दी से शेयर करने के लिए।
  • नए प्रोजेक्ट्स के लिए डेटा स्ट्रक्चर्स को प्रोटोटाइप और विज़ुअलाइज़ करने के लिए।
  • डेटाबेस या BI प्लेटफ़ॉर्म के बिना सिंपल डेटा एनालिसिस करने के लिए।
  • उन सिस्टम्स के बीच वन-ऑफ डेटा इम्पोर्ट/एक्सपोर्ट कार्यों को संभालने के लिए जो एक ही भाषा नहीं बोलते हैं।

जब भी आप यह वाक्यांश सुनें, "क्या तुम मुझे बस एक लिस्ट दे सकते हो...", और सोर्स एक JSON एंडपॉइंट हो, तो एक कन्वर्टर आपका पहला विचार होना चाहिए। यह डेटा डेमोक्रेसी के लिए अंतिम शॉर्टकट है।

और गहराई में जाएँ

  • JSON.org: JSON फ़ॉर्मैट के लिए ओरिजिनल, एक-पेज का सचित्र गाइड। एक क्लासिक। https://www.json.org/json-en.html
  • ECMA-404 The JSON Data Interchange Standard: JSON के लिए औपचारिक, आधिकारिक स्पेसिफिकेशन। थोड़ा सूखा है, लेकिन सच्चाई का अंतिम स्रोत। https://www.ecma-international.org/publications-and-standards/standards/ecma-404/
  • MDN Web Docs: Working with JSON: मोज़िला की ओर से JavaScript के भीतर JSON का उपयोग करने के तरीके पर एक प्रैक्टिकल गाइड, जिसमें महत्वपूर्ण JSON.parse() और JSON.stringify() मेथड्स शामिल हैं। https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON
  • Wikipedia: Office Open XML: .xlsx फ़ाइल फ़ॉर्मैट का एक ओवरव्यू, जो XML पार्ट्स के ZIP आर्काइव के रूप में इसकी संरचना की व्याख्या करता है। https://en.wikipedia.org/wiki/Office_Open_XML
  • SheetJS Community Edition: लोकप्रिय ओपन-सोर्स लाइब्रेरी के लिए GitHub रिपॉजिटरी जो कई ब्राउज़र-आधारित Excel टूल्स को शक्ति प्रदान करती है। पर्दे के पीछे के कोड पर एक नज़र। https://github.com/SheetJS/sheetjs

थ्योरी हो गई। अब हाथ आज़माइए — 100% आपके ब्राउज़र में।

टूल आज़माएँ: JSON से एक्सेल