ไทย

ข้อมูลและสเปรดชีต · CSV สะอาดยิ่งขึ้น

CSV กับ JSON: รูปแบบข้อมูลสองรูปแบบและแนวคิดเกี่ยวกับโครงสร้างเบื้องหลัง

· พื้นหลัง

csv json ข้อมูลรูปแบบ

ตารางแถวและคอลัมน์แบบเรียบข้างวัตถุ JSON ที่แตกแขนง ซึ่งสาขาที่ซ้อนกันไม่สามารถพอดีได้โดยตรง
ภาพประกอบเวกเตอร์ต้นฉบับ ToolAcre

CSV อธิบายตาราง JSON อธิบายต้นไม้ โพสต์นี้อธิบายว่า JSON มาจากไหน เหตุใดจึงมีประเภทและการซ้อนที่ CSV ไม่สามารถทำได้ และความหมายของการไม่ตรงกันทุกครั้งที่ข้อมูลย้ายระหว่างทั้งสอง

รายชื่อลูกค้าเดียวกันดูแตกต่างอย่างสิ้นเชิงกับ CSV และ JSON — เพราะเหตุใดแต่ละรูปแบบจึงเข้ารหัสแนวคิดเรื่องโครงสร้างที่แตกต่างกัน

ตารางลูกค้าดูกะทัดรัดใน CSV เนื่องจากแต่ละแถวยืมความหมายจากส่วนหัวที่ใช้ร่วมกันอันเดียว JSON ทำซ้ำชื่อคุณสมบัติในแต่ละออบเจ็กต์และสามารถซ้อนที่อยู่หรือรายการไว้ใต้ลูกค้าได้ ไฟล์ทั้งสองจึงแสดงความสามารถเชิงโครงสร้างที่แตกต่างกัน แม้ว่าข้อเท็จจริงที่มองเห็นจะทับซ้อนกันก็ตาม

ToolAcre แปลงจุดตัดทั่วไป: ส่วนหัวแบบแบนบวกกับแถวข้อมูลจะกลายเป็นอาร์เรย์ระดับบนสุดของวัตถุแบบเรียบ ไม่เปลี่ยนเครื่องหมายวรรคตอนในส่วนหัวเป็นสาขาหรืออนุมานอาร์เรย์จากคอลัมน์ที่ซ้ำกัน การทำความเข้าใจขอบเขตดังกล่าวจะป้องกันไม่ให้ตัวแปลงแบบแฟลตถูกเข้าใจผิดว่าเป็นผู้ออกแบบแบบจำลองข้อมูล

CSV เป็นตาราง — แถวและคอลัมน์ ความหมายตำแหน่ง และไม่มีอะไรนอกเหนือจากข้อความ

ภายในการใช้งานนี้ CSV เป็นตารางสตริงรูปสี่เหลี่ยมผืนผ้า แถวแรกระบุชื่อส่วนหัวและแต่ละเซลล์ต่อมาจะได้รับความหมายจากตำแหน่งคอลัมน์ แถวสั้นจะมีเบาะและแถวยาวได้รับการเตือน เนื่องจากตำแหน่งจะทำงานได้อย่างน่าเชื่อถือเมื่อความกว้างของแถวสอดคล้องกับส่วนหัวเท่านั้น

ไม่มีเซลล์ตัวเลขดั้งเดิม บูลีน อ็อบเจ็กต์ หรือเซลล์ว่าง เครื่องหมายคำพูดปกป้องไวยากรณ์แต่ไม่ได้กำหนดประเภท ลำดับตัวเลขและคำว่า true ยังคงเป็นค่าที่เป็นข้อความ ซึ่งทำให้ตัวระบุมีความเสถียร และขอให้ผู้บริโภคใช้สคีมาเมื่อมีข้อมูลอยู่จริง

ใน ToolAcre เซลล์ CSV เป็นสตริงที่วางอยู่ใต้แถวส่วนหัวเดียว

หนังสืองานจะถามถึงต้นกำเนิดและประวัติมาตรฐานของ JSON ในช่วงต้นทศวรรษ 2000 แต่พื้นที่เก็บข้อมูลนี้ไม่ใช่แหล่งข้อมูลสำหรับวันที่หรือการตีพิมพ์เหล่านั้น พฤติกรรมที่ตรวจสอบได้คือเบราว์เซอร์ใช้ `JSON.parse` และ `JSON.stringify` โดยยอมรับอาร์เรย์ระดับบนสุดของออบเจ็กต์สำหรับการแปลงเป็นตาราง

JSON ที่ไม่ถูกต้องได้รับข้อผิดพลาดในการแยกวิเคราะห์เฉพาะ รากที่ไม่ใช่อาร์เรย์ถูกปฏิเสธ และอาร์เรย์ที่มีพื้นฐานไม่ได้รับการสนับสนุน ขอบเขตรันไทม์เหล่านั้นมีความสำคัญต่อผู้เยี่ยมชมมากกว่าลำดับเหตุการณ์ที่ไม่ได้อ้างอิง บริบททางประวัติศาสตร์ควรมาจากมาตรฐานหลักที่อยู่นอกชุดแหล่งที่มาของงานนี้

JSON ประวัติมาตรฐานอยู่นอกหลักฐานที่เก็บข้อมูล รูปร่างรันไทม์ที่รองรับสามารถตรวจสอบได้

ออบเจ็กต์ JSON มีแต่ละคีย์อยู่ข้างๆ ค่า ในขณะที่เซลล์ CSV อาศัยส่วนหัวที่ดัชนีเดียวกัน ToolAcre คำนวณคีย์ที่ไม่กำกวมหนึ่งครั้ง จากนั้นแมปทุกแถวตามตำแหน่ง เซลล์ที่หายไปจะกลายเป็นสตริงว่าง ดังนั้นออบเจ็กต์จึงแชร์ชุดคีย์ที่เสถียร

คำอธิบายตนเองนั้นมีขนาดและค่าใช้จ่ายในการทำซ้ำ แต่ทำให้แต่ละบันทึก JSON สามารถเข้าใจได้โดยไม่ต้องแยกตำแหน่งส่วนหัว ในทางกลับกัน การเปลี่ยนลำดับคอลัมน์ CSV โดยไม่มีส่วนหัวจะทำลายความหมาย การแปลงจะต้องเก็บชื่อและตำแหน่งที่จับคู่กันทั่วทั้งตาราง

ต้นไม้กับตาราง — การซ้อน อาร์เรย์ และคีย์เสริม และเหตุใดจึงไม่มีที่ที่เป็นธรรมชาติติดกัน

ค่า JSON สามารถมีวัตถุและอาร์เรย์ได้ ในขณะที่เซลล์ CSV หนึ่งเซลล์ไม่สามารถแยกสาขาได้ ในทิศทางย้อนกลับ ToolAcre ทำให้ค่าที่ซ้อนกันเป็นอนุกรมด้วย `JSON.stringify` และวางข้อความ JSON ไว้ในเซลล์เดียว ไม่ได้สร้างคอลัมน์ address_city หรือแถวแท็กเพิ่มเติม

คีย์เสริมในระเบียน JSON จะกลายเป็นการรวมกันของคอลัมน์ตามลำดับที่เห็นครั้งแรก โดยมีช่องว่างในกรณีที่วัตถุไม่มีคีย์ นั่นคือการแบนราบที่สามารถป้องกันได้สำหรับวัตถุแบนกระจัดกระจาย มันไม่ได้จัดให้มีการทำแผนที่ตามธรรมชาติสำหรับต้นไม้ตามอำเภอใจ และเส้นทางก็บอกอย่างนั้นแทนที่จะคาดเดา

ตัวอย่างการทำงาน — หนึ่งบันทึกที่มีที่อยู่ที่ซ้อนกันและรายการแท็ก แสดงใน JSON จากนั้นบังคับให้อยู่ในคอลัมน์ CSV

แถว CSV แบบแบน `id,name,city` ตามด้วย `001,Ada,London` จะแปลงเป็นวัตถุเดียวโดยมีคุณสมบัติสตริงสามประการ หาก JSON มี `address: {city: "London"}` และ `tags: ["math","code"]` แทน การแปลงแบบย้อนกลับจะเขียนค่าที่ซ้อนกันเหล่านั้นเป็นสตริง JSON ใต้คอลัมน์ที่อยู่และแท็ก

การโหลด CSV อีกครั้งจะทำให้ได้สตริงที่มีไวยากรณ์ JSON ไม่ใช่ค่าที่ซ้อนกันที่สร้างขึ้นใหม่ แอปพลิเคชันในภายหลังสามารถแยกวิเคราะห์เซลล์เหล่านั้นภายใต้สคีมาของมันเอง แต่ ToolAcre ไม่ทำ การเปรียบเทียบการทำงานจะแยกตำแหน่งที่โครงสร้างตารางสิ้นสุดและโครงสร้างต้นไม้เริ่มต้นที่ใด

ตัวอย่างการทำงาน: แปลงฟิลด์แบบเรียบโดยตรง ในขณะที่ JSON ที่ซ้อนกันจะถูกเก็บรักษาไว้เป็นข้อความเซลล์ในแบบย้อนกลับเท่านั้น

JSON บรรทัด ภาษาสคีมา และตัวแยกวิเคราะห์การสตรีมอยู่นอกการใช้งาน เอาต์พุตเป็นอาร์เรย์หนึ่งอันที่มีการเยื้อง และอินพุตไฟล์จะถูกอ่านลงในหน่วยความจำก่อนการแปลง อย่าอนุมานการสตรีมแบบบันทึกต่อบันทึกจากผู้ปฏิบัติงานที่แยกวิเคราะห์

ในทำนองเดียวกัน เครื่องมือไม่ได้ตรวจสอบคุณสมบัติหรือช่วงตัวเลขที่ต้องการ โดยจะปกป้องคีย์ออบเจ็กต์จากส่วนหัวที่ว่างเปล่าและซ้ำกัน และรายงานรูปร่างของแถว แต่ความถูกต้องทางความหมายยังคงเป็นความรับผิดชอบของผู้บริโภค ไวยากรณ์แบบเรียบสามารถใช้ได้ในขณะที่ข้อมูลธุรกิจไม่ถูกต้อง

รู้ว่าโครงสร้างใดที่คุณกำลังก้าวไปสู่ ​​- วิธีที่ ToolAcre CSV Cleaner แปลงข้อมูลตารางแบบเรียบระหว่าง CSV และ JSON

รู้ว่าจุดหมายปลายทางคาดหวังโครงสร้างใด สำหรับการส่งออกแบบเรียบ ToolAcre ให้บริดจ์แบบโปร่งใส: ส่วนหัวจะกลายเป็นคีย์เฉพาะ แถวจะกลายเป็นวัตถุ และค่ายังคงเป็นสตริง สำหรับโมเดลแอปพลิเคชันที่ซ้อนกัน ให้กำหนดการแม็ปแทนที่จะบังคับสาขาผ่านรูปแบบการตั้งชื่อคอลัมน์โดยไม่ตั้งใจ

ดูตัวอย่างตาราง แก้ไขแถวที่ขาด และตรวจสอบ JSON ที่สร้างขึ้นก่อนดาวน์โหลด ตัวแปลงจะแข็งแกร่งที่สุดเมื่อใช้ภายในจุดตัดที่แคบของรูปแบบ ไม่ได้ลบความแตกต่างทางแนวคิด และขั้นตอนการทำงานที่น่าเชื่อถือไม่ควรขอให้ทำ