JSON सिंटैक्स में चार स्पेस वर्ण हैं

RFC 8259 में U+0020, टैब U+0009, नई पंक्ति U+000A और कैरिज रिटर्न U+000D हैं। NBSP U+00A0 इनमें नहीं है। formatJSON कोलन के बाद सामान्य स्पेस स्वीकार करता और NBSP अस्वीकार करता है। \u JavaScript स्ट्रिंग एस्केप है जो चलने पर वर्ण बनाता है।

formatJSON('{"n":\u00201}'); // accepted
formatJSON('{"n":\u00A01}'); // throws
स्ट्रिंग के बाहर U+0020 JSON जाँच में पास और U+00A0 विफल होता है
स्वयं बनाया आरेख: हरा स्वीकार और लाल अस्वीकार है। कोड जाँचे इनपुट से मेल खाते हैं; यह वास्तविक UI स्क्रीन नहीं है।

RFC 8259 §2: JSON Grammar

स्ट्रिंग के अंदर NBSP डेटा है

डबल कोट के अंदर NBSP इस उदाहरण में वैध है। फ़ॉर्मैटिंग और मिनिफ़िकेशन इसे रखते हैं। पूरे स्रोत में बदलने से A और B के बीच कोड पॉइंट 160 से 32 हो जाता है। सिंटैक्स सुधारते समय डेटा के स्पेस अंधाधुंध न बदलें।

const source = '{"text":"A\u00A0B"}';
JSON.parse(formatJSON(source, 0).output).text.codePointAt(1) // 160
JSON.parse(source.replaceAll("\u00A0", " ")).text.codePointAt(1) // 32

RFC 8259 §7: Strings

त्रुटि पंक्ति, कॉलम और त्रुटि स्थान पर जाने का नियंत्रण देखें। मूल रखें, स्ट्रिंग के बाहर गलत स्पेस फिर लिखें और जाँचें। NBSP की अलग पहचान या स्वतः सुधार सुविधा नहीं है। सिंटैक्स जाँच API स्कीमा नहीं जाँचती।

अक्सर पूछे जाने वाले प्रश्न

क्या मिनिफ़िकेशन गलत स्पेस सुधारता है?

नहीं। formatJSON आउटपुट से पहले सिंटैक्स जाँचता है, इसलिए बाहर का NBSP मिनिफ़िकेशन में भी अस्वीकृत है। स्ट्रिंग के अंदर यह बना रहता है।