नेस्टेड ऑब्जेक्ट और array संरचना दिखाने में तो अच्छे हैं, लेकिन जहाँ एक सपाट key-value लिस्ट चाहिए — जैसे स्प्रेडशीट, लॉग या अनुवाद फ़ाइल — वहाँ असुविधाजनक हो जाते हैं। Flatten ठीक इसी समस्या को हल करता है।
यह कैसे काम करता है
हर नेस्टेड फ़ील्ड एक पंक्ति बन जाती है, जहाँ key पूरा पथ होता है (डॉट या ब्रैकेट वाले इंडेक्स से लिखा हुआ) और value वही मान है। जैसे {"user": {"address": {"city": "जयपुर"}}}, बदलकर user.address.city → "जयपुर" जोड़ी बन जाता है। Array के element को पथ में इंडेक्स मिलता है: items[0].name।
यह कहाँ काम आता है: अनुवाद (i18n) फ़ाइलें
डॉट-नोटेशन वाली सपाट keys, i18next जैसी लाइब्रेरी में अनुवाद फ़ाइलों का मानक तरीका है — settings.profile.title, न कि नेस्टेड JSON ट्री। हिंदी वेबसाइट या ऐप का स्थानीयकरण (localization) करते समय अनुवादकों को नेस्टेड JSON से ज़्यादा यह सपाट सूची पढ़ने में आसान लगती है, खासकर स्प्रेडशीट में काम करते समय।
यह किस काम आता है
- नेस्टेड API डेटा को स्प्रेडशीट या डेटाबेस की सपाट टेबल में इम्पोर्ट करना।
- दो जटिल ऑब्जेक्ट्स की लाइन-दर-लाइन तुलना आसान बनाना।
- बहुत गहरे नेस्टेड JSON में कोई एक मान तुरंत ढूँढना, पूरा पथ एक नज़र में देखकर।
उल्टी प्रक्रिया: unflatten
सपाट लिस्ट से नेस्टेड संरचना वापस बनाने के लिए हर key को उसके पथ-खंडों में तोड़ा जाता है (डॉट और ब्रैकेट वाले इंडेक्स के आधार पर) और क्रमशः नेस्टेड ऑब्जेक्ट व array बनाए जाते हैं। मुश्किल तब आती है जब पथ अस्पष्ट हो — जैसे अगर डेटा में एक साथ literal key "a.b" और नेस्टेड पथ a.b दोनों मौजूद हों, तो unflatten यह तय नहीं कर सकता कि किसका मतलब था, और चुपचाप कुछ बदलने के बजाय टकराव (conflict) की सूचना देता है।