UTILS.
ทำงานในเบราว์เซอร์ 100%
{ }

JS Object เป็น JSON เข้มงวด

ซ่อม JavaScript object literal ที่หลวม — คีย์ไม่มีเครื่องหมายคำพูด, single quote, comma ท้าย, คอมเมนต์ — ให้เป็น JSON ที่ถูกต้องเข้มงวด โดยไม่ใช้ eval

— ผลลัพธ์จะแสดงที่นี่ —

เกี่ยวกับเครื่องมือนี้

เครื่องมือ JS Object เป็น JSON เข้มงวด ซ่อม JavaScript หรือ object literal สไตล์ JSON5 ที่หลวมให้เป็น JSON ที่ถูกต้องเข้มงวด มันสร้างบน tokenizer ที่เขียนด้วยมือ — ไม่เคยใช้ eval หรือ new Function — จึงปลอดภัยภายใต้ Content Security Policy ที่เข้มงวดและปลอดภัยที่จะวางข้อความที่ไม่น่าเชื่อถือเข้าไป ทุกอย่างทำงานในเบราว์เซอร์ของคุณ

มันยอมรับสิ่งที่ JSON จริงปฏิเสธ: คีย์ identifier ที่ไม่มีเครื่องหมายคำพูด, สตริงใน single quote, comma ท้ายก่อน ] หรือ }, คอมเมนต์บรรทัด // และบล็อก /* */, เลขฐานสิบหก (0xFF), เลขฐานแปดและฐานสอง, ตัวเลขที่นำหน้าด้วยบวกและนำหน้าด้วยจุด (+1, .5), และค่า undefined, NaN และ Infinity คีย์ถูกใส่เครื่องหมายคำพูดใหม่ด้วย double quote, สตริงถูก escape ใหม่อย่างถูกต้อง, คอมเมนต์และ comma ท้ายถูกตัดออก และตัวเลขถูกทำให้เป็นตัวเลข JSON ธรรมดา คุณเลือกวิธีจัดการ undefined (แปลงเป็น null หรือทิ้งคีย์) และตัวเลขที่ไม่จำกัด (แปลงเป็น null หรือแจ้งข้อผิดพลาด) จากนั้นค่าถูก serialize ใหม่ด้วย JSON.stringify ที่การเยื้องที่คุณเลือก — 2 ช่องว่าง, 4 ช่องว่าง, แท็บ, หรือย่อขนาด

เมื่ออินพุตไม่สามารถแยกวิเคราะห์ได้ เครื่องมือรายงานข้อผิดพลาดไวยากรณ์แรกพร้อมบรรทัดและคอลัมน์ คุณจึงหาปัญหาได้อย่างรวดเร็ว สิ่งนี้เสริม formatter JSON เข้มงวดซึ่งเพียงปฏิเสธอินพุตที่หลวม — ที่นี่เป้าหมายคือกอบกู้ผลลัพธ์คอนโซลที่คัดลอกมา, ส่วน config, และ object ที่แก้ไขด้วยมือให้เป็น JSON ที่ parser ใดก็รับได้

คำถามที่พบบ่อย

มันยอมรับไวยากรณ์หลวมอะไรบ้าง?
คีย์ไม่มีเครื่องหมายคำพูด, สตริง single quote, comma ท้าย, คอมเมนต์ // และ /* */, ตัวเลขฐานสิบหก/ฐานแปด/ฐานสอง, ตัวเลขนำหน้าด้วยบวกและนำหน้าด้วยจุด, และค่า undefined, NaN และ Infinity — สิ่งทั่วไปที่ทำให้ JS object ที่คัดลอกมาใช้เป็น JSON ไม่ได้
มันใช้ eval ในการแยกวิเคราะห์ไหม?
ไม่ มันใช้ tokenizer ที่เขียนด้วยมือและ parser แบบ recursive-descent ไม่เคยใช้ eval หรือ new Function มันจึงทำงานภายใต้ Content Security Policy ที่เข้มงวดและปลอดภัยสำหรับอินพุตที่ไม่น่าเชื่อถือ มันสร้างแค่ข้อมูลเท่านั้น ไม่เคยรันโค้ด
undefined, NaN และ Infinity ถูกจัดการอย่างไร?
JSON ไม่มีค่าเหล่านี้ คุณเลือก: undefined กลายเป็น null หรือทิ้งคีย์ได้ และ NaN/Infinity กลายเป็น null หรือแจ้งข้อผิดพลาดได้ สิ่งนี้ทำให้ผลลัพธ์เป็น JSON ที่ถูกต้องเข้มงวดไม่ว่าทางใด
จะเกิดอะไรเมื่ออินพุตไม่ถูกต้อง?
parser หยุดที่ข้อผิดพลาดไวยากรณ์จริงตัวแรกและรายงานพร้อมบรรทัดและคอลัมน์ที่เกิดขึ้น คุณจึงหาและแก้ไขตัวอักษรที่มีปัญหาได้แทนที่จะเดา

เครื่องมือเพิ่มเติม