เครื่องมือนี้ทำอะไร
JSON Lines (หรือ JSONL, NDJSON) เก็บค่า JSON หนึ่งค่าต่อบรรทัด เป็นรูปแบบยอดนิยมสำหรับล็อก การส่งออกข้อมูล API แบบสตรีม การนำเข้าจำนวนมากใน BigQuery และ Elasticsearch และชุดข้อมูลแมชชีนเลิร์นนิงอย่างไฟล์ fine-tuning ของ OpenAI เพราะโปรแกรมอ่านหรือเพิ่มเรคคอร์ดได้ทีละรายการโดยไม่ต้องโหลดทั้งไฟล์
แต่เครื่องมือจำนวนมากต้องการอาร์เรย์ JSON เดียว เครื่องมือนี้แปลง JSON Lines เป็นอาร์เรย์ JSON ที่จัดรูปแบบแล้ว และแปลงอาร์เรย์ JSON กลับเป็น JSON Lines ที่มีหนึ่งเรคคอร์ดแบบย่อต่อบรรทัด
วิธีใช้
- เลือก ทิศทาง: JSON Lines → JSON หรือ JSON → JSON Lines
- วางข้อมูล อัปโหลดไฟล์
.jsonl,.ndjsonหรือ.jsonหรือกด ตัวอย่าง - เมื่อส่งออกเป็น JSON เลือกเยื้อง 2 หรือ 4 ช่องว่าง หรือ แบบย่อ เพื่อให้อยู่ในบรรทัดเดียว
- คัดลอกหรือดาวน์โหลดผลลัพธ์ หรือใช้ ใช้เป็นอินพุต เพื่อแปลงกลับ
หากบรรทัดใดไม่ใช่ JSON ที่ถูกต้อง ข้อผิดพลาดจะระบุหมายเลขบรรทัดและคอลัมน์ ให้คุณไปยังเรคคอร์ดที่เสียได้ทันที มีประโยชน์มากเมื่อไฟล์ล็อกมีรายการที่ถูกตัดหนึ่งรายการปนอยู่ในหลายพันรายการ
ตัวอย่าง
JSON Lines สามบรรทัดนี้:
{"id": 1, "event": "signup"}
{"id": 2, "event": "login"}
{"id": 3, "event": "logout"}
จะกลายเป็นอาร์เรย์ JSON นี้:
[
{
"id": 1,
"event": "signup"
},
{
"id": 2,
"event": "login"
},
{
"id": 3,
"event": "logout"
}
]
เมื่อแปลงย้อนกลับ สมาชิกแต่ละตัวของอาร์เรย์จะถูกเขียนเป็นหนึ่งบรรทัดโดยไม่มีช่องว่าง และไฟล์จบด้วยการขึ้นบรรทัดใหม่
ควรใช้แบบไหนเมื่อใด
ใช้ JSON Lines เมื่อเรคคอร์ดถูกสร้างหรือประมวลผลทีละรายการ เช่น การเพิ่มต่อท้ายล็อก การสตรีมผลลัพธ์ การแบ่งชุดข้อมูลใหญ่ให้หลาย worker หรือการประมวลผลด้วยเครื่องมือแบบทีละบรรทัดอย่าง grep, head และ wc -l ใช้อาร์เรย์ JSON เมื่อโปรแกรมต้องการข้อมูลทั้งชุดในครั้งเดียว เช่น ไฟล์ตั้งค่า ข้อมูลทดสอบ หรือเนื้อหาการตอบกลับของ REST endpoint
คำถามที่พบบ่อย
› JSONL, NDJSON และ JSON Lines ต่างกันอย่างไร?
เป็นชื่อเรียกของรูปแบบเดียวกัน คือหนึ่งบรรทัดมีค่า JSON ที่สมบูรณ์หนึ่งค่า คั่นด้วยการขึ้นบรรทัดใหม่ JSON Lines (.jsonl) และ newline-delimited JSON (.ndjson) ต่างกันแค่ชื่อและนามสกุลไฟล์
› มีบรรทัดว่างได้ไหม?
บรรทัดว่างและการขึ้นบรรทัดใหม่ท้ายไฟล์จะถูกข้ามเมื่ออ่าน รองรับการขึ้นบรรทัดแบบ Windows (CRLF) และ BOM ของ UTF-8 ด้วย
› ไฟล์ของฉันเป็น JSON ที่จัดรูปแบบแล้ว อ็อบเจ็กต์หนึ่งยาวหลายบรรทัด ทำไมจึงผิดพลาด?
ใน JSON Lines ค่าแต่ละค่าต้องอยู่ในบรรทัดเดียว หากข้อมูลเป็นอาร์เรย์ JSON ปกติ ให้เปลี่ยนทิศทางเป็น JSON → JSON Lines หากเป็นอ็อบเจ็กต์ที่จัดรูปแบบต่อกันหลายตัว ให้ใส่ไว้ในอาร์เรย์ก่อน
› การแปลงเปลี่ยนตัวเลขหรือลำดับคีย์หรือไม่?
ไม่ ค่าและลำดับคีย์คงเดิม เปลี่ยนเพียงช่องว่าง จำนวนเต็มขนาดใหญ่มากที่เกินช่วงปลอดภัยของ JavaScript (ประมาณ 9 พันล้านล้าน) อาจสูญเสียความแม่นยำ เช่นเดียวกับเครื่องมือ JSON บนเบราว์เซอร์ทั่วไป