ความต้องการของฉันเป็นเพียงการแสดงชุดของค่าที่ดึงมาจากฐานข้อมูลในการแพร่กระจาย ฉันกำลังใช้ jQuery
ความต้องการของฉันเป็นเพียงการแสดงชุดของค่าที่ดึงมาจากฐานข้อมูลในการแพร่กระจาย ฉันกำลังใช้ jQuery
คำตอบ:
ชอบ XML บน JSON เมื่อสิ่งเหล่านี้เป็นจริง:
ชอบ JSON ผ่าน XML เมื่อสิ่งเหล่านี้เป็นจริง:
ฉันใช้ JSON ยกเว้นว่าฉันจำเป็นต้องใช้ XML ง่ายต่อการเข้าใจและ (เนื่องจากต้องการค่าใช้จ่ายในการกำหนดค่าที่น้อยกว่า) ทำให้โปรแกรมอ่านและเขียนได้ง่ายขึ้นหากห้องสมุดมีให้บริการในบริบทของคุณและพวกมันค่อนข้างแพร่หลายในขณะนี้
เมื่อ Amazon เปิดเผยแคตตาล็อกเป็นครั้งแรกในฐานะบริการเว็บพวกเขาเสนอทั้ง JSON และ XML ผู้ใช้ 90% เลือก JSON
พิจารณากรณีเฉพาะของคุณที่คุณใช้จาวาสคริปต์อยู่ที่ฝั่งไคลเอ็นต์ฉันจะไปกับ JSON ด้วยเหตุผลเหล่านี้:
เนื่องจาก JSON เป็นภาษาจาวาสคริปต์คุณต้องเขียนโค้ดให้น้อยลงในฝั่งไคลเอ็นต์ - เพียงแค่ eval()
(หรือยังดีกว่าJSON.parse()
) สตริง JSON และรับวัตถุที่คุณสามารถใช้ได้
ในขณะเดียวกันการประเมิน JSON บนฝั่งไคลเอ็นต์จะมีประสิทธิภาพมากขึ้นและเร็วขึ้น
การทำให้เป็นอันดับ JSON สร้างสตริงที่สั้นกว่า XML การใช้ JSON จะลดปริมาณของข้อมูลที่ใช้ข้ามสายและปรับปรุงประสิทธิภาพในส่วนที่เกี่ยวข้อง
นี่คือการอ่านเพิ่มเติม: http://www.subbu.org/blog/2006/08/json-vs-xml
eval()
JSON นั้นไม่ใช่เรื่องใหญ่อะไรเลยใช่ไหม?
บางสิ่งอื่น ๆ ที่ฉันพบใน XML vs JSON relm:
JSON ดีมากสำหรับ
ซึ่งหมายความว่ามันมีแนวโน้มที่จะชอบอาร์เรย์หรืออาร์เรย์ที่ซ้อนกัน อย่างไรก็ตาม JSON หายไปทั้งคู่
ดังนั้นหากคุณจะรวมบริการ JSON ตั้งแต่สองรายการขึ้นไปอาจมีความขัดแย้งของเนมสเปซที่อาจเกิดขึ้นได้ ที่ถูกกล่าว JSON สามารถใช้ประมาณ 90% ของสิ่งเดียวกัน XML สามารถใช้เมื่อแลกเปลี่ยนข้อมูลในประสบการณ์ของฉัน
โดยปกติแล้ว JSON จะกะทัดรัดกว่าและเร็วกว่าในการแยกวิเคราะห์
ต้องการ XML ถ้า:
กรณีที่สำคัญอย่างหนึ่งของ XML (เกือบ): ลองตรวจจับเมื่อส่งตัวอย่าง HTML มีประโยชน์มากกว่าการส่งข้อมูลดิบ AHAHสามารถทำสิ่งมหัศจรรย์ได้ในแอปพลิเคชั่นที่เรียบง่าย แต่ถูกมองข้ามบ่อยครั้ง โดยปกติสไตล์นี้จะถือว่าเซิร์ฟเวอร์ส่งตัวอย่างข้อมูล HTML ที่จะถูกแทรกไว้ในหน้าเว็บโดยไม่ต้องดำเนินการ
โดยปกติแล้วในกรณี AHAH CSS จะถูกใช้ประโยชน์สูงสุดในการนวดตัวอย่างด้วยสายตาและใช้เงื่อนไขง่ายๆเช่นการซ่อน / แสดงส่วนที่เกี่ยวข้องของตัวอย่างโดยใช้การตั้งค่าเฉพาะของผู้ใช้หรือเฉพาะแอปพลิเคชัน
JSON ง่ายต่อการแยกวิเคราะห์ XML นั้นยากต่อการแยกวิเคราะห์เล็กน้อยและช้ากว่าในการแยกวิเคราะห์และถ่ายโอน (ในกรณีส่วนใหญ่)
เนื่องจากคุณใช้ jQuery ฉันแนะนำให้ใช้ JSON: jQuery สามารถเรียกคืนข้อมูล JSON และแปลงเป็นวัตถุ Javascript โดยอัตโนมัติ ในความเป็นจริงคุณสามารถแปลงข้อมูล JSON เป็น Javascript วัตถุโดยใช้ EVAL คุณจะต้องข้าม XML ด้วยตนเอง (ฉันไม่ทราบวิธีการทำงานใน Javascript แต่มันยาก / น่ารำคาญกว่าในภาษาส่วนใหญ่ที่ฉันเคยใช้ห้องสมุด XML ด้วย)
JSON เป็นที่นิยมมากกว่าในแง่ของการประมวลผลที่ไคลเอ็นต์เบราว์เซอร์ต้องทำเพื่อวิเคราะห์ข้อมูล นอกจากนี้ JSON ยังเป็นรูปแบบการแลกเปลี่ยนข้อมูลที่มีน้ำหนักเบา
การแยกวิเคราะห์ XML ใช้ทรัพยากรเบราว์เซอร์เป็นจำนวนมากเสมอและควรหลีกเลี่ยงให้มากที่สุดเท่าที่จะทำได้
ฉันมีโพสต์บล็อกเกี่ยวกับรายละเอียดประวัติของเว็บโปรโตคอล (เช่น SOAP, XML, JSON, REST, POX และอื่น ๆ ) ให้ข้อมูลสรุปรวมถึงข้อดีและข้อเสียของแต่ละข้อ: http://www.servicestack.net / mythz_blog /? p = 154
ฉันคิดว่าคุณสามารถวาดความคล้ายคลึงกันจำนวนมากระหว่าง XML และ JSON โดยการเปรียบเทียบความแตกต่างระหว่างภาษาแบบไดนามิก (JSON) และแบบคงที่ (XML)
โดยทั่วไป XML เป็นรูปแบบการจัดลำดับที่เข้มงวดและเข้มงวดยิ่งขึ้นซึ่งสามารถเลือกที่จะตรวจสอบกับสคีมาประกอบ (ซึ่งเป็น XSD หรือ DTD) XSD นั้นค่อนข้างละเอียดและช่วยให้คุณสามารถอธิบายประเภทต่าง ๆ ได้เช่นวันที่, เวลา, การนับ, ประเภทที่ผู้ใช้กำหนดและแม้กระทั่งการสืบทอดประเภท ฯลฯ SOAP จะสร้างบนคุณลักษณะ XML ที่กำหนดไว้อย่างมีประสิทธิภาพซึ่งเป็นวิธีมาตรฐานในการอธิบายบริการเว็บของคุณ เช่นประเภทและการทำงาน) ผ่าน WSDL ความละเอียดและความซับซ้อนของข้อมูลจำเพาะของ WSDL นั้นทำให้คุณน่าเบื่อมากขึ้นในการพัฒนา แต่ในขณะเดียวกันก็มีเครื่องมือให้คุณใช้มากขึ้นและภาษาที่ทันสมัยส่วนใหญ่ก็มีเครื่องมืออัตโนมัติเพื่อสร้างลูกค้าของคุณที่รับภาระ ปิดเมื่อพยายามทำงานร่วมกับบริการภายนอก
ฉันยังคงแนะนำให้ใช้ XML สำหรับบริการเว็บของคุณหากคุณมี 'บริการขององค์กร' ที่กำหนดไว้อย่างดีซึ่งไม่ได้เปลี่ยนแปลงบ่อยนักหรือบริการเว็บของคุณต้องเข้าถึงได้จากหลายภาษา
เพื่อประโยชน์ทั้งหมดของ XML มาพร้อมกับข้อเสียเช่นกัน มันขึ้นอยู่กับ namespaces เพื่อให้รูปแบบที่ขยายได้พิมพ์และช่วยให้คุณสามารถระบุคุณลักษณะและองค์ประกอบภายในเอกสารเดียวกัน การมีเนมสเปซที่แตกต่างกันภายในเอกสารฉบับเดียวมีความหมายอย่างมากเมื่อใช้ Xml Parser เพื่อแยกข้อมูลคุณจะต้องระบุเนมสเปซของแต่ละองค์ประกอบที่คุณต้องการดึง / สำรวจ นอกจากนี้ยังคาดการณ์น้ำหนักบรรทุกที่ทำให้มัน verbose มากกว่าที่มันจะต้องเป็น การมีตัวเลือกในการแสดงผลแอททริบิวรวมถึงองค์ประกอบหมายถึงคลาสของคุณไม่ได้แม็พกับเอกสาร XML อย่างดี คุณสมบัติเหล่านี้ทำให้การเขียนโปรแกรมไม่เหมาะสมสำหรับภาษาส่วนใหญ่ทำให้ยุ่งยากและยุ่งยากในการทำงาน
ในทางตรงกันข้าม JSON นั้นตรงกันข้ามกับ XML ในหลาย ๆ ทางเนื่องจากมีการพิมพ์แบบหลวม ๆ และมีการสนับสนุนประเภทพื้นฐานอย่างง่าย ๆ : Number, Bool, string, Objects และ Array ทุกอย่างอื่นเป็นหลักจะต้องพอดีกับสตริง สิ่งนี้ไม่ดีเมื่อพยายามสื่อสารข้ามขอบเขตภาษาเนื่องจากคุณจะต้องปฏิบัติตามข้อกำหนดที่ไม่ได้มาตรฐานหากคุณต้องการสนับสนุนประเภทที่เฉพาะเจาะจงมากขึ้น ด้านบนของชุดคุณลักษณะที่ จำกัด ทำให้เหมาะกับการเขียนโปรแกรมที่ดีสำหรับภาษาส่วนใหญ่ - และเหมาะอย่างยิ่งสำหรับ JavaScript เนื่องจากสตริง JSON สามารถประเมินได้โดยตรงในวัตถุ JavaScript
ขนาดและประสิทธิภาพ
ฉันมีเกณฑ์มาตรฐานฐานข้อมูลนอร์ ธ วินด์บางตัวเปรียบเทียบขนาดและความเร็วระหว่างการใช้งาน Microsofts XML และ JSON โดยทั่วไป XML นั้นมีขนาดใหญ่กว่า 2x ของ JSON แต่ในขณะเดียวกันก็ดูเหมือนว่า Microsoft พยายามอย่างมากในการปรับแต่ง XML DataContractSerializer ให้เหมาะสมเนื่องจากมันเร็วกว่า JSON มากกว่า 30% ดูเหมือนว่าคุณจะต้องทำการแลกเปลี่ยนระหว่างขนาดและรอบการแสดง ไม่มีความสุขกับความจริงนี้ฉันตัดสินใจที่จะเขียนJsonSerializer ที่รวดเร็วของตัวเองซึ่งตอนนี้ 2.6x เร็วกว่าแล้วจึงเป็น XML ของ MS - ดีที่สุดสำหรับทั้งสองโลก :)
ฉันจะเลือก XML ผ่าน JSON ถ้าฉันต้องการตรวจสอบความถูกต้องของข้อมูลที่เข้ามาเพราะ XML รองรับสิ่งนี้ผ่าน XSD
เมื่อคุณลงเส้นทาง JSON คุณพบปัญหาเดียวกันกับที่ XML เผชิญเมื่อ 10 ปีที่แล้ว:
การผสมข้อมูลจากแหล่งที่แตกต่างกันสองแหล่งเป็นหนึ่งแพ็คเก็ต JSON อาจทำให้องค์ประกอบป้ายชื่อชนกัน รวมบันทึกการจัดส่งและใบแจ้งหนี้และทันใดนั้นที่อยู่จากอาจหมายถึงบางสิ่งที่แตกต่างออกไป นั่นเป็นเหตุผลที่มี XML namespaces
การแปลงระหว่างโครงสร้าง JSON ที่แตกต่างกันจะต้องมีการเขียนรหัสทางโลก วิธีการประกาศข้อมูลแผนที่ที่ชัดเจนยิ่งขึ้นจะทำให้งานง่ายขึ้น นั่นเป็นเหตุผลที่ XML มี XSLT
การอธิบายโครงสร้างของแพ็คเก็ต JSON - ฟิลด์, ชนิดข้อมูล, ฯลฯ - มีความจำเป็นเพื่อให้ผู้ใช้เชื่อมต่อกับบริการของคุณ จำเป็นต้องมีภาษาเมตาดาต้าสำหรับสิ่งนี้ นั่นเป็นเหตุผลที่ XML มี Schemas
การดำเนินการสนทนาลูกค้า - เซิร์ฟเวอร์พร้อมกันสองครั้งจะดูแล หากคุณถามคำถามสองข้อกับเซิร์ฟเวอร์และรับคำตอบกลับหนึ่งข้อคุณจะรู้ได้อย่างไรว่าคำถามนั้นตอบได้อย่างไร นั่นเป็นเหตุผลที่มี XML WS-ความสัมพันธ์
JSON เป็นการเข้ารหัสแบบเนทีฟสำหรับ javascript มันควรจะเร็วกว่าและง่ายกว่าที่จะทำงานด้วย
จากบรรทัดแรกที่http://json.org/xml.html
Extensible Markup Language (XML) เป็นรูปแบบข้อความที่ได้มาจาก Standard Generalized Markup Language (SGML) เมื่อเทียบกับ SGML แล้ว XML นั้นง่าย HyperText Markup Language (HTML) โดยเปรียบเทียบนั้นง่ายกว่ามาก ถึงกระนั้นหนังสืออ้างอิงที่ดีใน HTML ก็ยังหนาอยู่ เนื่องจากการจัดรูปแบบและโครงสร้างของเอกสารเป็นธุรกิจที่ซับซ้อน . . .
เห็นได้ชัดว่า JSON เร็วขึ้น แต่ก็ชัดเจนยิ่งขึ้นว่าอ่านยาก ใช้ JSON สำหรับความเร็วใช้ XML หากมีการโต้ตอบกับมนุษย์และคุณสามารถเสียสละความเร็วได้
ฉันใช้ JSON สำหรับการกำหนดค่าการแลกเปลี่ยนข้อมูลหรือการส่งข้อความ ฉันใช้ XML เฉพาะในกรณีที่ฉันต้องทำด้วยเหตุผลอื่นหรือทำเครื่องหมายข้อมูลที่มีลักษณะเหมือนเอกสาร
Microsoft รองรับทั้ง XML และ JSON ตัวอักษร XML เป็นคุณสมบัติใหม่ที่ยอดเยี่ยมใน VB 9 ในเวอร์ชั่นที่กำลังจะมาของ ASP.NET 4.0 JSON นั้นเป็นสิ่งที่ต้องเพิ่มขีดความสามารถของเทมเพลตฝั่งไคลเอ็นต์
จากคำถามที่คุณถามดูเหมือนว่า JSON อาจเป็นทางเลือกสำหรับคุณเนื่องจากง่ายต่อการประมวลผลทางฝั่งไคลเอ็นต์โดยมีหรือไม่มี jQuery
ใช้ JSON
ใช้ XML
ฉันพบบทความนี้ที่ตลาดสดดิจิตอลน่าสนใจจริงๆนี้
บางส่วนจากบทความที่ยกมาด้านล่าง
เกี่ยวกับข้อดีของ JSON:
หากสิ่งที่คุณต้องการส่งผ่านเป็นค่าอะตอมมิกหรือรายการหรือแฮชของค่าปรมาณู JSON มีข้อดีหลายอย่างของ XML: มันใช้งานได้อย่างตรงไปตรงมาผ่านทางอินเทอร์เน็ตรองรับแอพพลิเคชั่นที่หลากหลาย มันมีคุณสมบัติเสริมบางอย่างมันเป็นมนุษย์ที่ชัดเจนและสมเหตุสมผลการออกแบบมันเป็นทางการและรัดกุมเอกสาร JSON นั้นง่ายต่อการสร้างและใช้ Unicode ...
เกี่ยวกับข้อดี XML:
XML จัดการได้ดีอย่างน่าทึ่งด้วยความสมบูรณ์ของข้อมูลที่ไม่มีโครงสร้าง ฉันไม่กังวลเกี่ยวกับอนาคตของ XML เลยแม้ว่าการตายของมันจะได้รับการเฉลิมฉลองอย่างสนุกสนานจากกลุ่มนักออกแบบเว็บ API
และฉันไม่สามารถต้านทานการเหน็บ "ฉันบอกคุณแล้ว!" โทเค็นในโต๊ะของฉัน ฉันหวังว่าจะเห็นสิ่งที่คน JSON ทำเมื่อพวกเขาถูกขอให้พัฒนา API ยิ่งขึ้น เมื่อพวกเขาต้องการแลกเปลี่ยนข้อมูลที่มีโครงสร้างน้อยกว่าพวกเขาจะใช้มันเป็น JSON หรือไม่ ฉันเห็นการพูดถึงสคีมาเป็นครั้งคราวสำหรับ JSON ภาษาอื่น ๆ จะตามมาหรือไม่ ...
กฎด่วน:
คำอธิบาย:
บทบาท แต่เพียงผู้เดียว JSON เป็นข้อมูลเชิงวัตถุอันดับโดยใช้ชนิดข้อมูลร่วมกันให้มากที่สุดการเขียนโปรแกรมภาษา: รายการ , แฮชและสเกลาและเพื่อวัตถุประสงค์ที่จริงๆมันไม่สามารถตีหรือปรับปรุงให้ดีขึ้น หากต้องการใช้ "JSON ไม่มีหมายเลขเวอร์ชัน [เนื่องจาก] คาดว่าจะไม่มีการแก้ไขไวยากรณ์ JSON" - Douglas Crockford (ไม่สามารถเอาชนะได้ว่าเป็นสัญญาณว่าคุณทำงานของคุณได้อย่างสมบูรณ์แบบ)
XML ถูกขายครั้งเดียวเป็นรูปแบบการเปลี่ยนข้อมูล แต่พิจารณากรณีการใช้งานที่พบบ่อยที่สุดสองกรณี: การสื่อสารแบบไคลเอ็นต์ - เซิร์ฟเวอร์แบบอะซิงโครนัส (AJAX) - JSON มีการแทนที่ XML ค่อนข้างทั้งหมด (X จริงๆควรเป็น J) และบริการเว็บ : JSON ทำให้ XML เป็นทางเลือกสำรอง
XML สิ่งอื่น ๆ ที่ใช้กันอย่างแพร่หลายสำหรับไฟล์ข้อมูลที่มนุษย์เขียนได้ / อ่านได้ (?) สำหรับโปรแกรม แต่ที่นี่ก็เช่นกันคุณมีความกระชับมากขึ้นเป็นมิตรกับโปรแกรมมากขึ้นและรูปแบบที่เป็นมิตรกับมนุษย์มากขึ้นใน YAML
ดังนั้นสำหรับการแสดงข้อมูล JSON เต้น XML ทั่วกระดาน มีอะไรเหลือสำหรับ XML แล้ว? ตัวแทนเอกสารผสมเนื้อหาซึ่งเป็นสิ่งที่มันมีไว้สำหรับ
เทคโนโลยีเว็บที่ใหม่กว่าส่วนใหญ่ทำงานโดยใช้ JSON ดังนั้นจึงเป็นเหตุผลที่ดีในการใช้ JSON ข้อได้เปรียบที่ดีคือใน XML คุณสามารถแสดงข้อมูลเดียวกันได้หลายวิธีซึ่งใน JSON นั้นตรงไปตรงมามากกว่า
JSON IMHO นั้นมีความชัดเจนมากกว่า XML ซึ่งทำให้ฉันได้เปรียบอย่างชัดเจน และถ้าคุณทำงานกับ. NET Json.NET เป็นผู้ชนะที่ชัดเจนในการช่วยคุณทำงานกับ JSON