YAML को JSON में और JSON को YAML में बदलें, और किसी भी सिंटैक्स एरर की सटीक लाइन और कॉलम पाएँ।
YAML और JSON एक ही चीज़ बताते हैं — मैप, सूचियाँ, स्ट्रिंग, संख्याएँ, बूलियन और null — लेकिन उनकी प्राथमिकताएँ उलटी हैं। JSON ब्रेस और कोट इस्तेमाल करता है, जो मशीनों को पसंद हैं और लोग जिन्हें टाइप करने में ग़लती कर बैठते हैं। YAML इंडेंटेशन और लगभग कोई विराम-चिह्न इस्तेमाल नहीं करता, जो लोगों को तब तक पसंद है जब तक एक भटका हुआ स्पेस पूरे दस्तावेज़ का आकार न बदल दे। इनके बीच बदलना रोज़ का काम है: किसी Kubernetes मैनिफ़ेस्ट या GitHub Actions वर्कफ़्लो को JSON के रूप में पढ़ना ताकि कोई स्क्रिप्ट उसे इस्तेमाल कर सके, या किसी API जवाब को वापस YAML में बदलकर कॉन्फ़िग फ़ाइल बनाना। यह टूल दोनों दिशाओं में काम करता है और पहचान लेता है कि आपने कौन-सा पेस्ट किया।
कन्वर्ज़न आसान आधा हिस्सा है; असली मेहनत यह टूल वहाँ लगाता है जहाँ YAML टूटी हुई हो। सिंटैक्स एरर लाइन और कॉलम के रूप में बताया जाता है, ठीक उसी तरह गिना गया जैसे कोई एडिटर गिनता है, आसपास की लाइनों के एक टुकड़े के साथ और ठीक उस अक्षर के नीचे कैरेट के साथ जिस पर पार्सर रुक गया। यह जगह हमेशा वहाँ नहीं होती जहाँ आप सोचते हैं। इंडेंटेशन के लिए इस्तेमाल किया गया टैब ठीक उसी टैब पर मना कर दिया जाता है, और टुकड़ा उसे एक तीर के रूप में छापता है ताकि आप वह चीज़ देख सकें जो दिखती नहीं। बिना बंद हुआ कोट फ़ाइल के अंत में बताया जाता है, खुलने वाले कोट पर नहीं, क्योंकि वहीं पार्सर के पास बंद करने वाला कोट ढूँढ़ते-ढूँढ़ते टेक्स्ट ख़त्म हो जाता है। दोहराई गई की उसकी दूसरी उपस्थिति पर चिह्नित होती है, और यहाँ वह चेतावनी नहीं, एरर है। JSON की ग़लतियों के साथ भी यही सुलूक होता है: ब्राउज़र उन्हें अलग-अलग शब्दों में बताते हैं और कुछ तो सिर्फ़ अक्षर-ऑफ़सेट देते हैं, इसलिए लाइन और कॉलम यहीं गिने जाते हैं और हर जगह एक जैसे आते हैं।
YAML कुछ ऐसी चीज़ें कह सकता है जो JSON नहीं कह सकता, और उनमें से हर एक को चुपचाप आपका डेटा बदलने के बजाय बता दिया जाता है। ऐंकर और एलियस (anchors/aliases) खोल दिए जाते हैं, यानी एलियस ऐंकर वाले मान की पूरी नक़ल बन जाता है, और आपको बता दिया जाता है। merge keys नहीं: पार्सर JSON स्कीमा पर चलता है, जो उन्हें हल नहीं करता, इसलिए << वाली लाइन एक शाब्दिक की के रूप में बची रहती है और चेतावनी मिलती है कि वे फ़ील्ड हाथ से मिला लें। --- से अलग किए गए कई दस्तावेज़ों वाली फ़ाइल एक JSON ऐरे बन जाती है, हर दस्तावेज़ के लिए एक आइटम। .inf और .nan मान null बनकर निकलते हैं, और बहुत बड़ी पूर्णांक संख्याएँ अपने आख़िरी अंक खो देती हैं; दोनों बता दिए जाते हैं। वह स्कीमा एक सुरक्षा-निर्णय भी है: !!js/function जैसे टैग बनाए जाने के बजाय अनजान मानकर ठुकरा दिए जाते हैं। और इनमें से कुछ भी कहीं जाता नहीं — सब कुछ आपके डिवाइस पर चलता है।
नहीं। टेक्स्ट आपके अपने डिवाइस पर JavaScript से पार्स और कन्वर्ट होता है — कुछ भी कहीं भेजा, स्टोर या लॉग नहीं होता। यहाँ यह ख़ास तौर पर मायने रखता है: किसी Kubernetes मैनिफ़ेस्ट में होस्टनाम, पोर्ट, bucket के नाम और सर्विस अकाउंट होते हैं।
वे वह जगह हैं जहाँ पार्सर ने हार मानी, आपके एडिटर की तरह 1 से गिनी गई, और उसी अक्षर के नीचे कैरेट के साथ। एक स्थिति लोगों को चौंकाती है: बिना बंद हुआ कोट फ़ाइल के अंत में बताया जाता है, इसलिए पीछे जाकर वह आख़िरी कोट ढूँढ़ें जो आपने खोला था।
हाँ। हर एलियस JSON में ऐंकर वाले मान की पूरी नक़ल बन जाता है, और टूल यह बता देता है। merge keys अपवाद हैं: वे हल नहीं की जातीं, << एक शाब्दिक की के रूप में बचा रहता है, और चुपचाप ग़लत नतीजे के बजाय आपको साफ़ चेतावनी मिलती है।
हाँ। JSON में एक फ़ाइल में कई दस्तावेज़ों जैसी कोई अवधारणा नहीं है, इसलिए हर YAML दस्तावेज़ क्रम से एक JSON ऐरे का एक आइटम बन जाता है, और एक सूचना बता देती है कि कितने मिले।
क्योंकि YAML 1.2 सिर्फ़ true और false को बूलियन मानता है; yes, no, on और off स्ट्रिंग ही रहते हैं। पुराने 1.1 पार्सर उन्हें बदल देते थे — वही नियम जो देश कोड NO को false बना देता है। जब किसी मान का टेक्स्ट बने रहना ज़रूरी हो, उसे कोट में लिख दें।
Vai.la किसी भी URL को क्लिक आंकड़ों, QR Code और आपके अपने बायोलिंक के साथ एक शॉर्ट लिंक में बदल देता है।
टूल्स का इस्तेमाल कैसे होता है या उनके परिणामों के आधार पर लिए गए निर्णयों के लिए Vai.la ज़िम्मेदार नहीं है।