यदि तपाईं दैनिक रूपमा डाटा (Data) सँग काम गर्नुहुन्छ भने, तपाईंले डेटा ढाँचा नमिल्ने समस्या (Incompatible data types) भोग्नुभएको हुन सक्छ। जस्तै: केही डाटाहरू CSV फाइलहरूमा भण्डारण गरिएका हुन्छन् भने अरू JSON, YAML, वा TOML फाइलहरूमा। यी सबै फाइल ढाँचाहरूका आफ्नै फाइदा र बेफाइदाहरू छन्, र कहिलेकाहीँ हामीलाई थप विश्लेषणका लागि सबै डाटालाई एउटै ढाँचामा रूपान्तरण गर्नुपर्ने हुन्छ। यस लेखमा मैले दैनिक काममा यो कार्य गर्न प्रयोग गर्ने उपकरणहरू प्रस्तुत गरेको छु।

यद्यपि तपाईंलाई लाग्न सक्छ कि डाटा रूपान्तरण गर्न लामो स्क्रिप्ट (Script) लेख्नुपर्छ, तर त्यस्तो होइन। यदि तपाईंलाई पाइथन (Python) राम्रोसँग थाहा छ भने, तपाईं एक ढाँचाबाट अर्को ढाँचामा रूपान्तरण गर्न साधारण इनलाइन पाइथन (Inline Python) कोड लेख्न सक्नुहुन्छ।

python -c "import sys; print('Hello World');"

माथिको कमाण्ड (Command) इनलाइन पाइथन (Inline Python) कोड प्रयोग गरेर लेखिएको “Hello World” हो। :D

इनलाइन पाइथन कोड प्रयोग गर्दा सम्झनुपर्ने मुख्य कुरा यो हो कि यदि तपाईंले कोडभित्र दोहोरो उद्धरण चिन्ह " प्रयोग गर्नुपर्नेछ भने त्यसलाई एस्केप (Escape) गर्नुपर्ने हुन्छ। यदि तपाईं इनलाइन awk स्क्रिप्टसँग परिचित हुनुहुन्छ भने यो त्यस्तै हो।

यद्यपि ब्यास (Bash) बाटै सिधै पाइथन कोड चलाउने यो तरिका उपयोगी छ। तर यसलाई अझ बढी उपयोगी र ब्यास कमाण्ड (Bash Command) जस्तै बनाउनको लागि स्ट्यान्डर्ड इनपुट (stdin) डाटालाई स्क्रिप्टमा पाइप (Pipe) गर्ने तरिका थाहा पाउनु पर्छ। हामी यो sys.stdin फाइलबाट पढेर गर्न सक्छौँ।

echo "Hello World" | python -c "import sys; print(sys.stdin.read())"

यदि तपाईंले माथिका दुईवटा अवधारणाहरू बुझ्नुभयो भने, तपाईं एक लाइन कोडको प्रयोग गरेर इनपुट (stdin) डाटालाई अर्को प्रकारमा रूपान्तरण गर्न र आउटपुट (stdout) मा देखाउन सक्नुहुन्छ।

python -c "import sys, yaml; print(yaml.load(sys.stdin))"

माथिको कोडले YAML लाई JSON मा रूपान्तरण गर्दछ।

त्यस्तै, हामी निम्न कमाण्ड प्रयोग गरेर TOML लाई JSON मा रूपान्तरण गर्न सक्छौँ।

python -c "import sys, toml; print(toml.loads(sys.stdin.read()))"

त्यस्तै, हामी JSON लाई YAML र TOML मा रूपान्तरण गर्न सक्छौँ।

python -c "import sys, yaml; print(yaml.dump(sys.stdin.read()))"
python -c "import sys, toml; print(toml.dumps(sys.stdin.read()))"

तपाईं यिनीहरूलाई एलियास (Alias) को रूपमा भण्डारण गर्न सक्नुहुन्छ, र TOML लाई YAML मा रूपान्तरण गर्न वा उल्टो गर्नका लागि यिनीहरूलाई पाइप (Pipe) सँग जोड्न सक्नुहुन्छ, वा अलि लामो स्क्रिप्ट (Script) लेख्न सक्नुहुन्छ।

यदि तपाईंलाई डाटा फिल्टर (Filter) गर्ने वा डाटाको कुनै खास भाग मात्र रूपान्तरण गर्ने थप सुविधा चाहिन्छ भने, तपाईंले मैले जस्तै स्क्रिप्ट (Script) लेख्न सक्नुहुन्छ:

१. JSON फिल्टर (Json filter) Link to heading

माथिको स्क्रिप्टले केवल एउटा पार्मीटर (Parameter) लिन्छ र त्यसलाई डाटा फिल्टर गर्न इन्डेक्स (Index) को रूपमा प्रयोग गर्दछ।

२. JSON लाई CSV मा (Json to csv) Link to heading

३. TOML लाई JSON मा (toml to json) Link to heading

४. YAML लाई JSON मा (yaml to json) Link to heading

५. JSON लाई TOML मा (json to toml) Link to heading

६. JSON लाई YAML मा (json to yaml) Link to heading

यदि तपाईंलाई माथिको स्क्रिप्ट मनपर्‍यो र यसलाई स्थापना गर्न चाहनुहुन्छ भने, म्याक (Mac) मा brew को प्रयोग गरी स्थापना गर्न सक्नुहुन्छ।

brew tap shubhajeet/cluster
brew install jsontools