NDJSON को JSON में बदलें

यहाँ आप NDJSON को JSON में बदलते हैं, मुफ़्त और बिना खाते के: फ़ाइल ऊपर छोड़िए और कुछ ही सेकंड में नतीजा डाउनलोड के लिए तैयार मिलेगा। कन्वर्ज़न आपके अपने ब्राउज़र के भीतर होता है, इसलिए फ़ाइल कभी अपलोड नहीं होती। यह Windows, macOS और Linux पर वैसे ही चलता है जैसे iPhone और Android पर, और कनेक्शन काट देने पर भी चलता रहता है।

  • कहाँ चलता है आपके ब्राउज़र में। फ़ाइल कभी अपलोड नहीं होती।
  • बिना नुक़सान कुछ नहीं छोड़ा जाता। NDJSON में जो था, JSON में ठीक वही रहता है।
  • फ़ाइल आकार की सीमा हर फ़ाइल 100 MB तक, मुफ़्त, बिना खाते के।

एक बार में 100 फ़ाइलें। फ़ॉर्मेट अलग-अलग हों तो भी चलेगा।

NDJSON फ़ाइल शुरू से ही वैध JSON क्यों नहीं है

एक JSON दस्तावेज़ एक ही वैल्यू होता है। NDJSON फ़ाइल उनकी एक शृंखला है, बीच में newline लिए — कोई भी नेकनीयती इसे दस्तावेज़ नहीं बना सकती। पार्सर पहला ऑब्जेक्ट पढ़ता है, दूसरे की खुलती ब्रेस पर पहुँचता है, और अनपेक्षित-टोकन त्रुटि पर रुक जाता है।

नतीजा आम जगहों पर दिखता है। कोई JSON Schema validator फ़ाइल को मना कर देता है। response.json() ब्राउज़र में फेल हो जाता है। इसका इलाज हमेशा वही एक पंक्ति की संरचना है: पूरी चीज़ के चारों ओर ब्रैकेट, और रिकॉर्ड के बीच कॉमा।

वापस मिलने वाला JSON हमेशा एक ऐरे होता है

हर लाइन शीर्ष-स्तर के ऐरे का एक तत्व बन जाती है, फ़ाइल के क्रम में — यहाँ तक कि स्रोत में सिर्फ़ एक लाइन होने पर भी, तब भी एक तत्व वाला ऐरे बनता है, बिना-रैप की गई ऑब्जेक्ट नहीं। आउटपुट दो-स्पेस इंडेंट किया जाता है और newline पर ख़त्म होता है।

शेप का पहले से पता होना काम आता है: स्क्रिप्ट बिना जाँचे नतीजे में इंडेक्स लगा सकती है, और ऐरे की लंबाई स्रोत की ग़ैर-ख़ाली लाइनों की गिनती के बराबर होती है।

जो लिफ़ाफ़ा आपका सिस्टम चाहता है, वह अपने आप नहीं लिखा जाता

ज़्यादातर API नंगा ऐरे नहीं लेते। वे नाम के नीचे रिकॉर्ड लेते हैं — {"records": […]}, {"data": […]} — और अक्सर साथ में गिनती भी। यह बदलाव ऐरे बनाकर वहीं रुक जाता है, क्योंकि कोई नाम गढ़ना एक ऐसे अनुबंध को अंदाज़े से मान लेना होगा जो इसे दिखता ही नहीं।

बाद में जोड़ना आसान है: jq '{records: .}' out.json लपेट देता है। भेजने से पहले API के दस्तावेज़ में फ़ील्ड का नाम जाँच लीजिए, क्योंकि ठुकराया गया बैच अक्सर सिर्फ़ यह बताता है कि बॉडी अमान्य थी।

नेस्टिंग और टाइप बिना छुए JSON में पार होते हैं

यह NDJSON से बाहर निकलने की सुरक्षित दिशा है, और इसे साफ़ कहना ज़रूरी है क्योंकि पड़ोसी लक्ष्य ऐसे नहीं हैं। वही फ़ाइल CSV, TSV, XLSX या Parquet भेजने पर हर नेस्टेड ऑब्जेक्ट डॉट वाले कॉलम में चपटा हो जाता है। यहाँ ऐसा कुछ नहीं होता — तीन स्तर गहरी user ऑब्जेक्ट उतनी ही गहरी बनी रहती है।

टाइप भी इसी वजह से बचते हैं। नंबर नंबर रहता है, true बूलियन रहता है, null null रहता है। कुछ भी अनुमान से तय नहीं होता, क्योंकि ज़रूरत ही नहीं — स्रोत पहले से JSON था और लक्ष्य भी JSON है। हर रिकॉर्ड के भीतर की-ऑर्डर भी बनी रहती है।

NDJSON की एक टूटी लाइन पूरा दस्तावेज़ रोक देती है

कोई भी लाइन पार्स न हो पाए तो कुछ भी नहीं लिखा जाता। संदेश में लाइन नंबर होता है: «यह फ़ाइल NDJSON के रूप में नहीं पढ़ी जा सकी — लाइन 3 वैध JSON नहीं है।» कोई अधूरा दस्तावेज़ नहीं बनता, कोई रिकॉर्ड चुपचाप नहीं छूटता।

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

JSON में अतिरिक्त बाइट कहाँ से आते हैं

आउटपुट दो-स्पेस इंडेंट के साथ प्रिटी-प्रिंटेड है, इसलिए स्रोत में एक घनी लाइन वाला रिकॉर्ड अब हर लीफ़ वैल्यू के लिए एक लाइन घेरता है। एक दर्जन फ़ील्ड वाले फ़्लैट रिकॉर्ड की फ़ाइल इसीलिए क़रीब एक दर्जन गुना लाइन में बढ़ जाती है।

इनमें से कोई डेटा नहीं है, और यह ट्रांसफ़र में लगभग शून्य तक दब जाता है। अगर लक्ष्य किसी अपलोड फ़ील्ड की सीमा है, तो jq -c . से कॉम्पैक्ट रूप निकालिए।

पूरी NDJSON फ़ाइल एक साथ याददाश्त में रहती है

इस बदलाव के दोनों हिस्से पूरी-वैल्यू पर काम करते हैं। लाइनें लिखे जाने से पहले पूरी तरह ऐरे में पार्स होती हैं, और ऐरे एक ही पास में सिरियलाइज़ होता है — कुछ भी स्ट्रीम नहीं होता, क्योंकि ऐरे आख़िरी तत्व से पहले «पूरा» नहीं होता।

फ़्री सीमा 100 MB प्रति फ़ाइल है, और व्यावहारिक सीमा टैब की है। दसियों मेगाबाइट सामान्य है; कई सौ मेगाबाइट के रिकॉर्ड पर ब्राउज़र मेहनत करने लगता है — split -l 200000 से बँटी फ़ाइलें साफ़ बदलती हैं।

वापस NDJSON में पलटना ठीक-ठीक होता है

नतीजे को उलटी दिशा में बदलने पर वही मिलता है जिससे शुरुआत हुई थी। शीर्ष-स्तर का JSON ऐरे प्रति तत्व एक लाइन के रूप में लिखा जाता है, इसलिए रिकॉर्ड, उनकी की और उनका क्रम सब बिना बदले लौटते हैं।

यह इसे एक स्थायी माइग्रेशन के बजाय एक काम-चलाऊ क़दम बनाता है: JSON में बदलें, वैलिडेटर चलाएँ, किसी असली JSON एडिटर में सुधारें, वापस बदलें, और सुधरी हुई स्ट्रीम उस लोडर को दें जो लाइनें ही चाहता था।

रिकॉर्ड इसी टैब में पढ़े जाते हैं और कहीं और नहीं जाते

यह बदलाव पेज के भीतर सादी JavaScript है। कोई इंजन नहीं उतारा जाता, कोई अनुरोध फ़ाइल नहीं ले जाता, न कोई खाता है न रोज़ की कोई सीमा। नेटवर्क टैब इसकी जाँच है, न कि यह वाक्य।

यह इसलिए मायने रखता है क्योंकि इस बदलाव की ज़रूरत वाली फ़ाइलें शायद ही कभी सार्वजनिक होती हैं — किसी ईवेंट एक्सपोर्ट, ऑडिट लॉग या ग्राहक एक्सट्रैक्ट को किसी वेब सेवा में पेस्ट करना अक्सर संस्था की नीति के ख़िलाफ़ होता है, और यहाँ भेजने को कुछ है ही नहीं।

NDJSON को JSON में ऐसे बदलें

  1. अपनी NDJSON फ़ाइल इस पेज पर छोड़ें, या चुनने के लिए दबाएँ।
  2. लक्ष्य के रूप में JSON चुनें। कन्वर्ज़न आपके ब्राउज़र में होता है और फ़ाइल अपलोड नहीं होती।
  3. तैयार JSON फ़ाइल डाउनलोड कर लें।

NDJSON या JSON: क्या बदलता है

NDJSON और JSON की तुलना
NDJSONJSON
पूरा नामNewline-Delimited JSONJavaScript Object Notation
फ़ाइल एक्सटेंशन.ndjson, .jsonl.json
मीडिया टाइपapplication/x-ndjsonapplication/json
पहली बार प्रकाशित20132001
विनिर्देशRFC 8259
लाइसेंसखुला मानकखुला मानक
आज की स्थितिमौजूदामौजूदा
ब्राउज़र में खुलता हैकोई ब्राउज़र नहींहर ब्राउज़र
इसकी जगह विचारणीयCSVXML, YAML

क्या बचा रहता है

कुछ नहीं खोता। NDJSON और JSON — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

नतीजा खोलना

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

jq NDJSON और JSON — दोनों पढ़ लेता है, इसलिए आप नतीजे को असली फ़ाइल के बग़ल में रखकर देख सकते हैं, बिना दूसरा प्रोग्राम खोले।

कौन-सा फ़ॉर्मेट किस काम के लिए है

JSON 2001 से चला आ रहा है, और RFC 8259 में तय किया गया है। Visual Studio Code, jq और Postman इस फ़ॉर्मेट को पढ़ लेते है।

NDJSON से JSON: आम सवाल

क्या मेरी NDJSON फ़ाइल कहीं अपलोड होती है?

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

क्या NDJSON को JSON में बदलना मुफ़्त है?

हाँ। न खाता, न वॉटरमार्क, और न कोई रोज़ का कोटा जो ख़त्म हो: यह आपकी अपनी मशीन पर चलता है, इसलिए आप जितनी बार चाहें लौट सकते हैं। ब्राउज़र 100 MB तक की फ़ाइलें सँभालता है, एक बार में 100।

NDJSON को JSON में बदलने पर क्या गुणवत्ता जाती है?

नहीं। JSON वही सामग्री बिना कुछ फेंके सँभालता है: नतीजा गुणवत्ता में असली फ़ाइल जैसा ही होता है।

क्या NDJSON से JSON बिना नुक़सान का है?

कुछ नहीं खोता। NDJSON और JSON — दोनों अपनी सामग्री बिना नुक़सान सँभालते हैं: यह कन्वर्ज़न पैकिंग बदलता है, गुणवत्ता नहीं, और आप इसे दोहरा सकते हैं बिना इस डर के कि नुक़सान जमा होता जाएगा।

इन फ़ॉर्मेट के बारे में और