JSON Formatter
จัดรูปแบบ ย่อขนาด และตรวจสอบความถูกต้องของ JSON - และเมื่อแยกวิเคราะห์ไม่ได้ ระบบจะบอกตำแหน่งที่แน่นอน
อินพุต
0 ตัวอักษรผลลัพธ์
จัดรูปแบบ ย่อขนาด และตรวจสอบความถูกต้องของ JSON - และเมื่อแยกวิเคราะห์ไม่ได้ ระบบจะบอกตำแหน่งที่แน่นอน
JSON ที่มาจากล็อก API หรือไฟล์กำหนดค่ามักจะเป็นบรรทัดยาวบรรทัดเดียว และ JSON ที่แยกวิเคราะห์ไม่ได้มักจะล้มเหลวในจุดที่คุณมองไม่เห็น เครื่องมือนี้จัดย่อหน้าให้คุณอ่านได้ ย่อขนาดเมื่อคุณต้องการให้เล็ก และเมื่อมันเสียหายจะบอกบรรทัดและคอลัมน์พร้อมแสดงบรรทัดนั้นให้คุณดู
ส่วนใหญ่แล้วคุณไม่ได้มาที่นี่เพื่อทำให้ JSON สวยงาม - คุณมาที่นี่เพราะมีอะไรบางอย่างปฏิเสธมันโดยไม่บอกเหตุผล ตัวแยกวิเคราะห์จะรายงานบรรทัด คอลัมน์ และสิ่งที่มันคาดหวัง และเครื่องมือจะพิมพ์บรรทัดนั้นพร้อมกับสองบรรทัดโดยรอบ คอมมาที่หายไปในบรรทัดที่สี่ร้อยของไฟล์กำหนดค่าคือการแก้ไขสามสิบวินาทีเมื่อคุณรู้ว่ามันอยู่ที่ไหน
JSON ไม่เคยอนุญาตให้ใช้ทั้งสองอย่างนี้ แต่ไฟล์ที่ผู้คนส่งให้คุณจริง ๆ - tsconfig การตั้งค่า VS Code อะไรก็ตามที่แก้ไขด้วยมือ - เต็มไปด้วยสิ่งเหล่านี้ การติ๊กตัวเลือกนี้จะลบออกก่อนการแยกวิเคราะห์ และเครื่องมือจะระบุว่าลบคอมเมนต์และคอมมาไปกี่รายการ เป็นตัวเลือกเสริมและรายงานอย่างแม่นยำเพราะตัวจัดรูปแบบที่เปลี่ยนเอกสารของคุณอย่างเงียบ ๆ นั้นแย่กว่าตัวที่ปฏิเสธมัน
มันไม่เดาว่าคุณหมายถึงอะไร นอกเหนือจากการลบสองอย่างข้างต้น จะไม่มีการซ่อมแซมใด ๆ: วงเล็บปีกกาที่ไม่ปิด คีย์ที่ใช้เครื่องหมายคำพูดเดี่ยว หรือคีย์ที่ไม่มีเครื่องหมายคำพูด จะถูกรายงาน ไม่ใช่เขียนใหม่ การเรียงคีย์และการจัดย่อหน้าใหม่ไม่เคยเปลี่ยนลำดับของอาร์เรย์หรือเปลี่ยนสตริงใด ๆ ส่วนถัดไปจะบอกกรณีไม่กี่กรณีที่ผลลัพธ์ยังอาจต่างจากสิ่งที่คุณวาง
JSON ของคุณจะถูกแยกวิเคราะห์แล้วเขียนออกมาใหม่ บางอย่างจึงกลับมาในรูปแบบที่ปรับให้เป็นมาตรฐาน ตัวเลขจะถูกเขียนใหม่: 1.50 กลายเป็น 1.5, 1E3 กลายเป็น 1000.0 และ -0 กลายเป็น 0 ส่วนทศนิยมที่มีหลักมากกว่าที่ float 64 บิตเก็บได้จะถูกปัดเศษ (0.1000000000000000055 กลายเป็น 0.1) จำนวนเต็มจะคงค่าเดิมทุกหลักได้ถึง 4,300 หลัก (ที่ยาวกว่านั้นจะถูกปฏิเสธ) ถ้าออบเจ็กต์มีคีย์ซ้ำ จะเหลือเฉพาะค่าสุดท้ายโดยไม่มีคำเตือน NaN, Infinity และ -Infinity จะถูกยอมรับและส่งผ่านตามเดิม แม้ JSON มาตรฐาน (RFC 8259) จะไม่อนุญาต และตัวเลขที่ใหญ่เกินกว่า float จะรับได้ เช่น 1e400 จะออกมาเป็น Infinity หากเรื่องใดในนี้สำคัญกับระบบที่คุณจะส่งข้อมูลเข้าไป ให้ตรวจสอบเองก่อนเชื่อผลลัพธ์ที่ไม่มีข้อผิดพลาด
มันถูกส่งไปยังเซิร์ฟเวอร์เพื่อแยกวิเคราะห์และส่งกลับมาทันทีในการตอบกลับเดียวกัน ไม่มีสิ่งใดถูกเขียนลงดิสก์ แคช หรือบันทึกล็อก และบันทึกการใช้งานเก็บเฉพาะจำนวน - ขนาด ความลึกของการซ้อน โหมดที่เลือก - ไม่เคยเก็บตัวเอกสารเลย
ส่วนใหญ่เป็นเพราะคอมเมนต์ คอมมาท้ายรายการ เครื่องหมายคำพูดเดี่ยว หรือคีย์ที่ไม่มีเครื่องหมายคำพูด - ทั้งหมดนี้พบได้ทั่วไปในไฟล์กำหนดค่าและไม่มีอันไหนเป็น JSON ที่ถูกต้องตามหลักเลย ติ๊ก "อนุญาตคอมเมนต์และคอมมาท้ายรายการ" สำหรับสองอย่างแรก ส่วนที่เหลือไม่ถูกต้องจริง ๆ และต้องแก้ไข
สูงสุด 2,000,000 ตัวอักษรต่อคำขอ ข้อความที่ยาวกว่านั้นจะถูกปฏิเสธพร้อมแจ้งความยาวที่แน่นอน สำหรับไฟล์ขนาดนั้น เครื่องมือบรรทัดคำสั่งอย่าง jq เป็นเครื่องมือที่ดีกว่า
ไปป์ไลน์ล็อกและตัวโหลดสตรีมจะอ่านออบเจ็กต์ JSON หนึ่งรายการต่อบรรทัดแทนที่จะเป็นอาร์เรย์ขนาดใหญ่หนึ่งชุด เลือกตัวเลือกนี้แล้วอาร์เรย์ระดับบนสุดจะกลับมาเป็นเรคคอร์ดแบบกะทัดรัดหนึ่งรายการต่อบรรทัด
ไม่ ลำดับของคีย์ในออบเจ็กต์ไม่มีความหมายใน JSON และลำดับของอาร์เรย์ - ซึ่งมีความหมาย - จะไม่ถูกแตะต้องเลย การเรียงมีไว้เพื่อให้เปรียบเทียบเอกสารฉบับเดียวกันสองเวอร์ชันได้โดยไม่มีสัญญาณรบกวน
ใน Excel สำหรับ Microsoft 365 ให้บันทึกเป็นไฟล์ .json แล้วเลือก Data > Get Data > From File > From JSON จากนั้น Power Query จะเปิดขึ้น อาร์เรย์ระดับบนสุดจะแสดงเป็น List ปุ่ม To Table จะแปลงเป็นคอลัมน์ของ Records และปุ่มขยาย (ลูกศรสองอัน) ที่หัวคอลัมน์จะแยกแต่ละคีย์ออกเป็นคอลัมน์ของตัวเอง การขยายอาร์เรย์ที่ซ้อนอยู่จะเพิ่มหนึ่งแถวต่อหนึ่งรายการ Power Query ต้องการเอกสาร JSON ที่ถูกต้องเพียงหนึ่งเอกสาร จึงควรแก้ข้อผิดพลาดที่นี่ก่อน ซึ่งจะบอกบรรทัดและคอลัมน์ แล้วบันทึกผลจาก จัดรูปแบบ หรือ ย่อขนาด ส่วนผลแบบ JSON Lines มีไว้สำหรับเครื่องมือจัดการล็อก เครื่องมือนี้ไม่ได้แปลง JSON เป็น CSV หรือ Excel เอง
Python มีตัวตรวจสอบมาให้แล้ว: python -m json.tool data.json จะแสดงเอกสารพร้อมการเยื้อง 4 ช่องว่าง หรือหยุดพร้อมข้อความเช่น Expecting ',' delimiter: line 3 column 3 ถ้าติดตั้ง jq ไว้ jq . data.json จะจัดรูปแบบ ส่วน jq empty data.json จะตรวจสอบอย่างเดียวและไม่แสดงอะไรเลยเมื่อไฟล์ถูกต้อง ทั้งสองแบบไม่รับความคิดเห็นหรือเครื่องหมายจุลภาคต่อท้าย ไฟล์ตั้งค่าที่มีสิ่งเหล่านี้จึงไม่ผ่าน ให้วางไฟล์ที่นี่แล้วเลือก "อนุญาตความคิดเห็นและเครื่องหมายจุลภาคต่อท้าย" เพื่อดูว่าอะไรถูกลบออกไป
ตัวแยกวิเคราะห์คาดว่าจะเจอคีย์ของออบเจ็กต์แต่กลับเจอสิ่งอื่น ส่วนใหญ่เป็นเพราะคีย์ใช้เครื่องหมายคำพูดเดี่ยวหรือไม่มีเครื่องหมายคำพูดเลย เช่น {'name': 'Asha'} ที่คัดลอกมาจาก Python หรือ JavaScript ซึ่งจะหยุดที่บรรทัด 1 คอลัมน์ 2 เพราะ JSON กำหนดให้ทุกคีย์และทุกสตริงอยู่ในเครื่องหมายคำพูดคู่ และเครื่องมือนี้ไม่เคยแก้เครื่องหมายคำพูดให้ จึงต้องแก้เอง ถ้าข้อความเดียวกันขึ้นที่วงเล็บปีกกาปิด เช่นใน {"a": 1,} แปลว่ามีเครื่องหมายจุลภาคต่อท้าย ให้เลือก "อนุญาตความคิดเห็นและเครื่องหมายจุลภาคต่อท้าย" เพื่อลบออก ส่วน Expecting value ที่ True, False หรือ None แปลว่าเป็นค่าของ Python เพราะ JSON เขียน true, false และ null เป็นตัวพิมพ์เล็ก ใน Python คำสั่ง json.dumps(data) ให้ JSON ที่ถูกต้อง แต่ print(data) ไม่ใช่ ข้อผิดพลาดจะแสดงตามที่ตัวแยกวิเคราะห์ของ Python เขียนไว้เป็นภาษาอังกฤษ เพื่อให้ค้นหาข้อความนั้นได้ตรงตัว
ตัวแยกวิเคราะห์อ่านค่า JSON ครบหนึ่งค่าแล้วยังเจอข้อความต่อท้ายอีก สาเหตุที่พบบ่อยคือ ล็อกแบบ JSON Lines (NDJSON) ที่มีหนึ่งออบเจ็กต์ต่อบรรทัด ซึ่งจะหยุดที่บรรทัด 2 คอลัมน์ 1 หรือเอกสารสองชุดที่วางต่อกัน หรือความคิดเห็น // หลังวงเล็บปีกกาปิดตัวสุดท้าย ซึ่งตัวเลือก "อนุญาตความคิดเห็นและเครื่องหมายจุลภาคต่อท้าย" จะลบให้ เครื่องมือนี้ตรวจทีละเอกสาร จึงควรวางทีละระเบียน หรือใส่ระเบียนทั้งหมดไว้ใน [ ] โดยคั่นด้วยเครื่องหมายจุลภาค จากนั้นเมื่อเลือก JSON Lines ก็จะได้ผลลัพธ์บรรทัดละหนึ่งระเบียนเหมือนเดิม