डेवलपर टूल · सिंटेक्स कन्वर्टर्स
CSV का गायब मानक: RFC 4180 क्या कवर करता है और क्या खुला छोड़ देता है
· पेजभूमि
CAसवी json डेटा-प्रारूप
CSV किसी भी विशिष्टता से पहले का है, और जो RFC इसका वर्णन करता है वह सूचनात्मक और जानबूझकर संकीर्ण है। यह पोस्ट बताती है कि RFC 4180 क्या परिभाषित करता है, यह किस बारे में कुछ नहीं कहता है, और CSV को परिवर्तित करना हमेशा एक बातचीत क्यों है।
किसका CSV सही है? - एक ही तालिका के दो निर्यात, एक अर्धविराम के साथ और एक अल्पविराम के साथ, दोनों को CSV कहा जाता है
ToolAcre JSON से अल्पविराम, अर्धविराम- या टैब-सीमांकित आउटपुट उत्सर्जित कर सकता है। यह दो प्रतिस्पर्धी CSV निर्यातों को नहीं पढ़ता है या किCAक को सही घोषित नहीं करता है। CSV यहां केवल लिखने के लिए है, इसलिए डिलीमीटर विकल्प एक डिटेक्शन एल्गोरिदम के बजाय एक स्पष्ट आउटपुट विकल्प है।
वह भेद एक सामान्य तथ्यात्मक चूक को रोकता है। एक इंटरफ़ेस जो अर्धविराम लिख सकता है, उसने यह साबित नहीं किया है कि वह किसी अज्ञात फ़ाइल में अर्धविराम की पहचान कर सकता है, स्थानीय दशमलव को संभाल सकता है या हेडर की व्याख्या कर सकता है। वे अलग-अलग इनपुट जिम्मेदारियां हैं जिन्हें जानबूझकर बाहर रखा गया है।
दो सीमांकक विकल्प आउटपुट विकल्प हैं, यह सबूत नहीं है कि यह पैनल किसी भी फ़ाइल को पढ़ता है
रिपॉजिटरी में प्रारंभिक स्प्रेडशीट या डेटाबेस इतिहास के लिए कोई स्रोत नहीं है, इसलिए लेख कालक्रम का आविष्कार नहीं करता है। यह वर्तमान लेखक और उसके परीक्षणों से शुरू होता है: रिकॉर्ड, फ़ील्ड, सीमांकक, CRLF समाप्ति और उद्धरण से बचना।
ऐतिहासिक संदर्भ को बाद में समीक्षा किए गए स्रोतों के साथ जोड़ा जा सकता है। एक कन्वर्टर कार्यान्वयन इस बात का प्रमाण है कि उत्पाद आज क्या लिखता है, न कि इस बात के लिए कि कोई सम्मेलन पहली बार कब सामने आया या विक्रेता क्यों अलग हो गए।
CSV RFC 4180 से पहले का इतिहास भंडार साक्ष्य से बाहर है
डिलीमीटर, डबल कोट, कैरिज रिटर्न या लाइन फ़ीड वाला फ़ील्ड डबल कोट्स में संलग्न है, और प्रत्येक एम्बेडेड कोट दोगुना है। सामान्य स्प्रैडशीट ट्रिमिंग को रोकने के लिए अग्रणी या अनुगामी रिक्त स्थान को भी उद्धृत किया जाता है। रिकॉर्ड CRLF पर समाप्त होते हैं और फ़ाइल समाप्त हो जाती है।
ये व्यवहार रिपॉजिटरी में परीक्षण किए गए RFC 4180-शैली नियमों का पालन करते हैं। लेख सार्वभौमिक अनुपालन का दावा करने से बचता है क्योंकि लेखक वैकल्पिक सीमांकक का भी समर्थन करता है और संकीर्ण व्याकरण के बाहर सुरक्षा प्रबंधन जोड़ता है।
लेखक पूर्ण मानक अनुपालन का दावा किए बिना RFC 4180-शैली उद्धरण और CRLF का उपयोग करता है
CSV सेल JSON प्रकार को संरक्षित नहीं करते हैं। शून्य और खाली स्ट्रिंग दोनों खाली सेल बन जाते हैं, जबकि बूलियन और संख्याएँ पाठ प्रतिनिधित्व बन जाते हैं। UTF-8 सामग्री को पारित किया जाता है और जिन उपभोक्ताओं को इसकी आवश्यकता होती है उनके लिए एक वैकल्पिक BOM को पहले जोड़ा जा सकता है।
स्थानीय व्याख्या सन्निहित नहीं है. एक अर्धविराम सीमांकक दशमलव अल्पविराम के साथ सह-अस्तित्व में रह सकता है, लेकिन लेखक स्थान के आधार पर संख्याओं को पुन: स्वरूपित नहीं करता है या दिनांक प्रकार को एन्कोड नहीं करता है। प्राप्तकर्ता एप्लिकेशन अभी भी यह तय करता है कि प्रत्येक फ़ील्ड की व्याख्या कैसे की जाए।
इस लेखक में एन्कोडिंग, प्रकार और स्थानीय सीमाएँ स्पष्ट रहती हैं
कार्यान्वित विविधताएं अल्पविराम, अर्धविराम और टैब, साथ ही एक वैकल्पिक BOM हैं। `=`, `+`, `-`, `@`, टैब या कैरिएज रिटर्न से शुरू होने वाला फॉर्मूला जैसा टेक्स्ट डिफ़ॉल्ट रूप से एक एपोस्ट्रोफ के साथ उपसर्ग किया जाता है, इसलिए स्प्रेडशीट इसे टेक्स्ट के रूप में मानते हैं। उपयोगकर्ता उस सुरक्षा को अक्षम कर सकते हैं और चेतावनी प्राप्त कर सकते हैं।
इस लेखक में कोई `sep=` संकेत या बैकस्लैश-एस्केप मोड नहीं है। उन्हें शिप किए गए विकल्पों के रूप में उल्लेख करना गलत होगा। एंबेडेड उद्धरण दोहरीकरण का उपयोग करते हैं, ठीक वैसे ही जैसे परीक्षण दावा करते हैं।
देखी गई स्प्रैडशीट विविधताएं यहां लागू किए गए विकल्पों और सुरक्षा तक सीमित हैं
इस मार्ग में प्रत्येक धारणा पार्स किए गए JSON से शुरू होती है: कौन सा मान पंक्तियों की आपूर्ति करता है, नेस्टिंग कैसे बिंदीदार स्तंभों में समतल हो जाती है और कौन सी कुंजियाँ हेडर बन जाती हैं। आने वाली CSV बोली के बारे में कोई धारणा नहीं बनाई गई है क्योंकि आने वाली CSV को अस्वीकार कर दिया गया है।
यह सुधार कार्यपुस्तिका की अनुरोधित दिशा को उलट देता है। CSV-to-JSON वर्कफ़्लो को किसी अन्य टूल में डिलीमीटर, उद्धरण, हेडर और सेल प्रकार चुनना होगा। ToolAcre की त्रुटि चुपचाप अनुमान लगाने के बजाय उस इनकार की व्याख्या करती है।
रूपांतरण धारणाएँ JSON-to-CSV पर केवल इसलिए लागू होती हैं क्योंकि CSV इनपुट अस्वीकार कर दिया गया है
विकृत CSV की मरम्मत करना दायरे से बाहर है। टूटे हुए उद्धरण, मिश्रित एन्कोडिंग और आकस्मिक सीमांकक के लिए CSV क्लीनर या स्पष्ट निदान के साथ किसी अन्य पार्सर की आवश्यकता होती है। सिंटैक्स कन्वर्टर सख्त JSON, क्षतिग्रस्त नहीं CSV टेक्स्ट प्राप्त करता है।
आउटपुट तब भी लक्ष्य के लिए अनुपयुक्त हो सकता है जब एक नेस्टेड ट्री अस्पष्ट बिंदीदार कॉलम बनाता है या 2,000 कॉलम से अधिक होता है। चेतावनियाँ और कैप डाउनलोड से पहले उन तालिका-आकार की विफलताओं को उजागर करते हैं।
टेकवे: CSV एक सम्मेलन है, प्रारूप नहीं - और सिंटेक्स कन्वर्टर्स पैनल एक अच्छी तरह से बनाई गई फ़ाइल को JSON में कैसे बदल देता है, आप इसका निरीक्षण कर सकते हैं
CSV को एक सम्मेलन के रूप में मानें जिसके विकल्प दृश्यमान होने चाहिए। ToolAcre अपने आउटपुट विकल्पों का दस्तावेजीकरण करता है और अंडर-निर्दिष्ट रिवर्स को अस्वीकार करता है। यह दो मूलभूत रूप से भिन्न कार्यों के लिए एक बटन का उपयोग करने से अधिक विश्वसनीय है।
प्राप्तकर्ता प्रणाली के विरुद्ध परिसीमन, उद्धरण, CRLF, BOM और सूत्र का निरीक्षण करें। यदि इनपुट पार्सिंग की आवश्यकता है, तो किसी अज्ञात फ़ाइल पर लेखक के सम्मेलनों को स्थानांतरित करने के बजाय पूछने वाले टूल का उपयोग करें।
एक व्यावहारिक स्वीकृति जांच इच्छित उपभोक्ता में उत्पन्न फ़ाइल को खोलती है और कच्चे बाइट्स या टेक्स्ट की भी जांच करती है। उपभोक्ता दृष्टिकोण प्रदर्शन और आयात समस्याओं को पकड़ता है; कच्चा दृश्य स्प्रैडशीट पुनर्व्याख्या के बिना सीमांकक, दोहरे उद्धरण चिह्न, CRLF और एक वैकल्पिक BOM की पुष्टि करता है। सूत्र-जैसी स्ट्रिंग को निष्क्रिय पाठ के रूप में और एक ऋणात्मक संख्या को एक संख्या के रूप में परीक्षण करें। वे युग्मित चेक लेखक के वास्तविक अनुबंध को यह दावा किए बिना सत्यापित करते हैं कि प्रत्येक प्रोग्राम CSV सम्मेलनों को समान रूप से लागू करता है।