ข้อมูลและสเปรดชีต · CSV สะอาดยิ่งขึ้น
CSV กับ JSON: รูปแบบข้อมูลสองรูปแบบและแนวคิดเกี่ยวกับโครงสร้างเบื้องหลัง
· พื้นหลัง
csv json ข้อมูลรูปแบบ
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 ที่สร้างขึ้นก่อนดาวน์โหลด ตัวแปลงจะแข็งแกร่งที่สุดเมื่อใช้ภายในจุดตัดที่แคบของรูปแบบ ไม่ได้ลบความแตกต่างทางแนวคิด และขั้นตอนการทำงานที่น่าเชื่อถือไม่ควรขอให้ทำ