การโพสต์และตอบคำถามเนื่องจากมีความคิดและความสับสนที่ล้าสมัยมากมายเกี่ยวกับมาตรฐาน ณ เดือนธันวาคม 2560 มีสองมาตรฐานการแข่งขัน:
RFC 8259 - https://tools.ietf.org/html/rfc8259
ECMA-404 - http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf
json.org แสดงให้เห็น ECMA-404 เป็นมาตรฐาน แต่เว็บไซต์นี้ไม่ได้ปรากฏเป็นผู้มีอำนาจ ในขณะที่ฉันคิดว่ามันยุติธรรมที่จะพิจารณาสิทธิ์ของ ECMA สิ่งที่สำคัญคือที่นี่ความแตกต่างเพียงอย่างเดียวระหว่างมาตรฐาน (เกี่ยวกับคีย์เฉพาะ) คือ RFC 8259 กล่าวว่าคีย์ควรไม่ซ้ำกันและ ECMA-404 กล่าวว่าพวกเขาไม่จำเป็นต้องเป็น เป็นเอกลักษณ์
RFC-8259:
"ชื่อภายในวัตถุควรเป็นชื่อเฉพาะ"
คำว่า "ควร" ในตัวพิมพ์ใหญ่ทั้งหมดนั้นมีความหมายภายในโลก RFC ที่กำหนดไว้ในมาตรฐานอื่น (BCP 14, RFC 2119 - https://tools.ietf.org/html/rfc2119 ) เป็นมาตรฐานอื่น
- ควรคำนี้หรือคำคุณศัพท์ "แนะนำ" หมายความว่าอาจมีเหตุผลที่ถูกต้องในสถานการณ์พิเศษที่จะไม่สนใจรายการใดรายการหนึ่ง แต่จะต้องเข้าใจและชั่งน้ำหนักอย่างรอบคอบก่อนเลือกหลักสูตรอื่น
ECMA-404:
"ไวยากรณ์ JSON ไม่ได้กำหนดข้อ จำกัด ใด ๆ ของสตริงที่ใช้เป็นชื่อไม่ต้องการให้สตริงชื่อนั้นไม่ซ้ำกันและไม่ได้กำหนดนัยสำคัญใด ๆ ให้กับการเรียงลำดับของคู่ชื่อ / ค่า"
ดังนั้นไม่ว่าคุณจะเชือดมันไม่มีมันเป็น JSON
เหตุผลที่กำหนดสำหรับคำแนะนำคีย์เฉพาะใน RFC 8259 คือ
วัตถุที่มีชื่อไม่ซ้ำกันสามารถใช้งานร่วมกันได้ในแง่ที่ว่าการใช้งานซอฟต์แวร์ทั้งหมดที่ได้รับวัตถุนั้นจะตกลงในการแมปชื่อ - ค่า เมื่อชื่อภายในวัตถุไม่ซ้ำกันพฤติกรรมของซอฟต์แวร์ที่ได้รับวัตถุดังกล่าวจะไม่สามารถคาดเดาได้ การใช้งานจำนวนมากรายงานคู่สุดท้ายของชื่อ / ค่าเท่านั้น การใช้งานอื่น ๆ รายงานข้อผิดพลาดหรือล้มเหลวในการแยกวิเคราะห์วัตถุและการใช้งานบางอย่างรายงานชื่อคู่ / ค่าทั้งหมดรวมถึงรายการที่ซ้ำกัน
กล่าวอีกนัยหนึ่งจากมุมมอง RFC 8259 ใช้ได้ แต่ตัวแยกวิเคราะห์ของคุณอาจมีปัญหาและไม่มีคำสัญญาว่าจะมีการจับคู่กับคีย์นั้นหรือไม่ถ้ามี จากมุมมองของ ECMA-404 (ซึ่งฉันได้รับมอบหมายเป็นการส่วนตัว) เป็นสิ่งที่ถูกต้องเป็นระยะเวลา สำหรับฉันนี่หมายความว่าโปรแกรมแยกวิเคราะห์ใด ๆ ที่ปฏิเสธที่จะแยกวิเคราะห์จะเสีย อย่างน้อยควรแยกวิเคราะห์ตามมาตรฐานทั้งสองนี้ แต่วิธีที่ทำให้มันกลายเป็นวัตถุพื้นเมืองที่คุณเลือกได้ไม่ว่าจะในกรณีใด ๆ คีย์ที่ไม่ซ้ำกันหรือไม่ขึ้นอยู่กับสภาพแวดล้อมและสถานการณ์อย่างสมบูรณ์และไม่มีสิ่งใดในมาตรฐานที่เริ่มต้นด้วย
Dictionary<string, string>