हिन्दी

डेटा और स्प्रेडशीट · CSV क्लीनर

CSV और JSON के बीच रूपांतरण: आकार, प्रकार और क्या खो जाता है

· यह काम किस प्रकार करता है

CAसवी json डेटा-प्रारूप

एक आयताकार CSV ग्रिड समतल JSON वस्तुओं की एक पंक्ति बन जाता है, जबकि प्रत्येक मान टेक्स्ट बना रहता है
मूल ToolAcre वेक्टर चित्रण

CSV फ्लैट टेक्स्ट है और JSON नेस्टेड, टाइप किया गया डेटा है, इसलिए उनके बीच कन्वर्ट करने में निर्णय शामिल होते हैं। यह पोस्ट सारणीबद्ध डेटा के लिए सामान्य JSON आकृतियों की व्याख्या करती है, प्रकारों का अनुमान कैसे लगाया जाता है या नहीं, और राउंड ट्रिप में क्या नहीं बच सकता है।

एक API JSON चाहता है, निर्यात CSV है, और प्रत्येक संख्या एक स्ट्रिंग के रूप में आती है - दोनों प्रारूप प्रकारों के बारे में असहमत क्यों हैं

एक स्प्रेडशीट निर्यात यह बताए बिना 42 दिखा सकता है कि क्या उन वर्णों का मतलब गिनती, उत्पाद कोड या पहचानकर्ता है। JSON किसी संख्या को स्ट्रिंग से अलग कर सकता है, लेकिन CSV स्रोत उस अंतर को प्रदान नहीं कर सकता है। ToolAcre इसलिए रूढ़िवादी प्रतिनिधित्व चुनता है: प्रत्येक कोशिका एक JSON स्ट्रिंग बन जाती है, जिसमें अंक, वास्तविक दिखने वाले शब्द और खाली कोशिकाएं शामिल होती हैं।

यह निर्णय 0012 जैसे टेक्स्ट को बरकरार रखता है और API एकीकरण के लिए रूपांतरण को पूर्वानुमानित बनाता है। इसका मतलब यह भी है कि डाउनस्ट्रीम कोड को अंकगणित करने से पहले फ़ील्ड को अपनी स्कीमा के अंतर्गत डालना होगा। जेनरेट की गई फ़ाइल को पहले से ही टाइप की गई मान लेने से केवल कन्वर्टर से एक धारणा कम दृश्यमान एप्लिकेशन कोड में चली जाती है।

सामान्य लक्ष्य आकार - हेडर द्वारा कुंजीबद्ध वस्तुओं की एक सरणी, और इसलिए हेडर को साफ और अद्वितीय होने की आवश्यकता क्यों है

मार्ग प्रत्येक डेटा पंक्ति के लिए एक ऑब्जेक्ट के साथ एक शीर्ष-स्तरीय सरणी तैयार करता है। हेडर सेल ऑब्जेक्ट कुंजियाँ बन जाते हैं, और मान समान कॉलम स्थितियों से लिए जाते हैं। एक खाली तीसरा हेडर column_3 बन जाता है, जबकि id नामक दूसरा हेडर पहले id फ़ील्ड को ओवरराइट करने के बजाय id_2 बन जाता है।

साफ़, अद्वितीय नाम उपयोगी होते हैं, लेकिन कन्वर्टर छोटे अक्षर, लिप्यंतरण या रिक्त स्थान को प्रतिस्थापित नहीं करता है। यह केवल कुंजी की गणना करते समय हेडर को ट्रिम करता है, फिर जहां आवश्यक हो वहां एक स्थिति नाम या संख्यात्मक प्रत्यय का आविष्कार करता है। यदि API को ग्राहक ईमेल के बजाय customer_email की आवश्यकता है, तो आउटपुट अनुबंध पर भरोसा करने से पहले जानबूझकर उस कॉलम का नाम बदलें।

वैकल्पिक आकार - सरणियों और स्तंभ-उन्मुख वस्तुओं की सरणी, और जब प्रत्येक बेहतर फिट हो

रूपरेखा ने चयन योग्य लक्ष्य के रूप में सरणियों और स्तंभ-उन्मुख वस्तुओं के सरणियों को प्रस्तावित किया। वे उचित डेटा डिज़ाइन हैं, लेकिन यह इंटरफ़ेस उन्हें प्रदान नहीं करता है। इसका आउटपुट हमेशा पहली CSV पंक्ति द्वारा कुंजीबद्ध फ्लैट रिकॉर्ड की JSON सरणी होती है, जो पढ़ने योग्य निरीक्षण के लिए दो स्थानों से इंडेंट होती है।

वह संकीर्ण विकल्प इस बारे में अस्पष्टता को दूर करता है कि कॉलम का नाम कहां रहता है और हर रिकॉर्ड को एक जैसा आकार देता है। यदि कोई अन्य उपभोक्ता सरणियों की अपेक्षा करता है, तो डाउनलोड किए गए JSON को उस उपभोक्ता की स्कीमा के अंतर्गत रूपांतरित करें। यह दावा करना कि ToolAcre कई लेआउट में से एक को चुनता है, उन नियंत्रणों और शाखाओं का वर्णन करेगा जो कॉन्फ़िगरेशन या पैनल कोड में मौजूद नहीं हैं।

यह कन्वर्टर एक आकार उत्सर्जित करता है: समतल वस्तुओं की एक शीर्ष-स्तरीय सरणी

किसी प्रकार का अनुमान नहीं लगाया जाता. CSV टेक्स्ट 42 "42" बन जाता है, गलत "गलत" हो जाता है, और एक रिक्त स्थान शून्य के बजाय "" बन जाता है। यह टूल रिकॉर्ड और कार्यान्वयन में स्पष्ट है, जो कोशिकाओं को सीधे स्ट्रिंग गुणों पर मैप करता है। रूट किसी कॉलम का निरीक्षण नहीं करता है और यह तय नहीं करता है कि सभी गैर-रिक्त मान संख्यात्मक हैं।

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

प्रकार को पाठ के रूप में संरक्षित किया जाता है; ToolAcre कोई अनुमान नहीं लगाता

विपरीत दिशा में, ToolAcre एक शीर्ष-स्तरीय JSON सरणी स्वीकार करता है जिसके आइटम ऑब्जेक्ट हैं। यह पहले देखे गए क्रम में प्रत्येक ऑब्जेक्ट में कुंजियों के संघ से कॉलम बनाता है, ताकि बाद के रिकॉर्ड द्वारा प्रस्तुत फ़ील्ड खो न जाए। गुम, शून्य और अपरिभाषित गुण खाली CSV सेल बन जाते हैं।

किसी प्रॉपर्टी के अंदर संग्रहीत ऑब्जेक्ट या सरणी को उस एक सेल के अंदर JSON टेक्स्ट के रूप में क्रमबद्ध किया जाता है। यह पाठ्य प्रतिनिधित्व को सुरक्षित रखता है लेकिन नेस्टेड संरचना को अतिरिक्त कॉलम या पंक्तियों में नहीं बदलता है। एक गैर-सरणी रूट और आदिम मानों वाली एक सरणी को अस्वीकार कर दिया जाता है क्योंकि इनमें से कोई भी इस मार्ग द्वारा समर्थित तालिका मॉडल से मेल नहीं खाता है।

JSON-to-CSV वस्तुओं की एक सरणी स्वीकार करता है और नेस्टेड मानों को JSON टेक्स्ट के रूप में लिखता है

नाम, सक्रिय, गिनती और उसके बाद Ada, true, 007 पर विचार करें। JSON परिणाम एक सारणी है जिसमें एक ऑब्जेक्ट है जिसका नाम "Ada", सक्रिय "true" और गिनती "007" है। उस सपाट ऑब्जेक्ट सरणी को वापस परिवर्तित करने से वही तीन पाठ्य कोशिकाएँ उत्पन्न होती हैं क्योंकि किसी भी प्रकार के अनुमान ने शून्य को नहीं हटाया या बूलियन-दिखने वाले शब्द को परिवर्तित नहीं किया।

अब किसी अन्य मान से पहले एक रिक्त हेडर जोड़ें। JSON कुंजी कॉलम_4 बन जाती है, इसलिए स्रोत नाम गायब होने पर भी डेटा पहुंच योग्य रहता है। हालाँकि, हेडर की चौड़ाई से परे एक अतिरिक्त सेल जोड़ें, और लोडर एक फटी हुई पंक्ति के बारे में चेतावनी देता है; उस अतिरिक्त सेल में कोई कुंजी नहीं है और वह JSON से अनुपस्थित है।

इसमें क्या शामिल नहीं है - गहराई से नेस्टेड JSON, स्कीमा सत्यापन और बहुत बड़े JSON दस्तावेज़ों की स्ट्रीमिंग

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

इनपुट फ़ाइल जांच कॉन्फ़िगर किए गए 50 MB तक फ़ाइलों की अनुमति देती है, और CSV पार्सिंग एक कार्यकर्ता में होती है। वे तथ्य स्ट्रीमिंग स्थापित नहीं करते हैं: फ़ाइल पाठ और पूर्ण पंक्तियाँ अभी भी रूपांतरण के लिए भौतिक हैं। बहुत बड़े JSON वर्कफ़्लो के लिए, ऐसे सिस्टम का उपयोग करें जिसका कार्यान्वयन यहां अनुमान लगाने के बजाय स्पष्ट रूप से वृद्धिशील पार्सिंग का दस्तावेजीकरण करता है।

स्कीमा सत्यापन, आदिम सरणियाँ और गैर-सरणी जड़ें स्वीकृत आकार से बाहर हैं

रूपांतरण विकल्पों का एक दृश्य सेट है: कुंजी के रूप में पहली पंक्ति, रिकॉर्ड के रूप में सपाट वस्तुएं, और मान के रूप में स्ट्रिंग। ToolAcre किसी नमूने से अनुमान लगाने के बजाय उन विकल्पों को स्थिर बनाता है। खाली और दोहराए गए हेडर नियतात्मक कुंजियाँ प्राप्त करते हैं, जबकि अनाम अधिशेष मूल्य पर किसी का ध्यान नहीं जाने से पहले रैग्ड इनपुट सामने आ जाता है।

सीमांकक और पंक्ति आकार की पुष्टि करने, चेतावनियों का समाधान करने, फिर JSON को डाउनलोड या कॉपी करने के लिए पूर्वावलोकन का उपयोग करें। परिणामी फ़ाइल उस कोड के लिए उपयुक्त है जो अपनी स्वयं की स्कीमा जानता है। यह जानबूझकर उस स्कीमा का विकल्प नहीं है, और इसका संयम प्रारूप परिवर्तन के दौरान पाठ्य ID की सुरक्षा करता है।