मुख्य सामग्री पर जाएं
CuteJSON
↑↓ नेविगेट करें Enter चुनें Esc बंद करें

JSON को NDJSON में कैसे बदलें लॉग्स और स्ट्रीम्स के लिए

प्रकाशित 2 मिनट का पाठ Akash Kinkar Pandey द्वारा

NDJSON प्रति लाइन एक JSON मान है, और वही पूरा फ़ॉर्मेट है। यह मौजूद है क्योंकि एक रीडर एक लाइन हैंडल कर सकता है और उसे भूल सकता है, जो यह बनाता है कि एक लॉग फ़ाइल या बड़ा एक्सपोर्ट स्ट्रीमेबल है जब एक विशाल एरे नहीं है: कुछ भी एक ही बार में पूरे डॉक्यूमेंट को मेमोरी में रखने की ज़रूरत नहीं है।

JSON to NDJSON कनवर्टर का उपयोग करना

एक दिशा चुनें और Convert दबाएं। NDJSON में जाने के लिए एक एरे चाहिए, क्योंकि यह JSON का वह आकार है जो वैल्यूज़ का एक क्रम है; हर लाइन पर किसी भी तरह का एलीमेंट आ सकता है, सिर्फ ऑब्जेक्ट्स नहीं।

[{"id": 12345678901234567890}, "plain string", 42, null]

बन जाता है:

{"id":12345678901234567890}
"plain string"
42
null

हर एलीमेंट को अपनी लाइन मिलती है, मिनिफाइड, और बीस अंकों का id हर अंक बनाए रखता है क्योंकि दोनों दिशाएं JSON.parse के बजाय टोकन स्ट्रीम से होकर जाती हैं।

खाली लाइन्स

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

वापस पढ़ना, और टूटी लाइन क्या बताती है

NDJSON को JSON में बदलना हर लाइन को अलग से वैलिडेट करता है और उस लाइन नंबर से फेल रिपोर्ट करता है जो आपकी फ़ाइल में वास्तव में है। दिया

{"a":1}
{"a":2}
{"a":}
{"a":4}

फेल लाइन 3 पर रिपोर्ट होता है, लाइन 1 पर या फ़ाइल के अंत में नहीं, इसलिए आप हज़ार लाइन की फ़ाइल में टूटे रिकॉर्ड पर सीधे जा सकते हैं बिना गिने।

प्रति लाइन एक मान, सख्ती से

एक ही लाइन पर दो JSON मान NDJSON नहीं हैं, भले ही एक लचीला पार्सर इसे गलती से स्वीकार कर सकता है। यह टूल इसे रिजेक्ट करता है, क्योंकि इसे चुपचाप स्वीकार करने का मतलब होगा कि एक डाउनस्ट्रीम रीडर जो असली स्पेसिफिकेशन के साथ बनाया गया है वह इस टूल द्वारा लिखे गए से असहमत है। अगर आपको चाहिए कि हर रिकॉर्ड पढ़ने योग्य इंडेंटेड हो, तो नियमित एरे में वापस बदलने के बाद रिजल्ट पर JSON फ़ॉर्मैटर का उपयोग करें; NDJSON लाइन्स जानबूझकर बिना इंडेंट के रहती हैं, क्योंकि मान के अंदर लाइन ब्रेक रिकॉर्ड समाप्त कर देगा।

सभी लेखों पर लौटें