เหตุผลที่แท้จริงว่าทำไมคีย์ JSON ควรอยู่ในเครื่องหมายคำพูดขึ้นอยู่กับความหมายของตัวระบุของ ECMAScript 3
ไม่สามารถใช้คำสงวนเป็นชื่อคุณสมบัติใน Object Literals โดยไม่มีเครื่องหมายคำพูดตัวอย่างเช่น:
({function: 0})
({if: 0})
({true: 0})
แม้ว่าคุณจะใช้เครื่องหมายคำพูดชื่อคุณสมบัติจะถูกต้อง:
({"function": 0})
({"if": 0})
({"true": 0})
Crockford ของตัวเองอธิบายไว้ในการพูดคุยนี้พวกเขาต้องการรักษามาตรฐาน JSON ให้เรียบง่ายและไม่ต้องการมีข้อ จำกัด ด้านความหมายทั้งหมด:
....
นั่นคือตอนที่เราค้นพบปัญหาชื่อที่ไม่ได้อ้างถึง ปรากฎว่า ECMA Script 3 มีนโยบายตีคำสงวน คำสงวนจะต้องถูกยกมาในตำแหน่งสำคัญซึ่งเป็นเรื่องที่น่ารำคาญจริงๆ เมื่อฉันเริ่มกำหนดสิ่งนี้ให้เป็นมาตรฐานฉันไม่ต้องการให้คำสงวนทั้งหมดอยู่ในมาตรฐานเพราะมันจะดูโง่จริงๆ
ตอนนั้นฉันพยายามโน้มน้าวผู้คนใช่คุณสามารถเขียนแอปพลิเคชันใน JavaScript มันใช้งานได้จริงและเป็นภาษาที่ดี ฉันไม่อยากจะพูดในเวลาเดียวกัน: และดูสิ่งที่โง่เขลาจริงๆที่พวกเขาทำ! ดังนั้นฉันจึงตัดสินใจว่าเรามาพูดถึงคีย์แทน
แบบนั้นเราไม่ต้องบอกใครหรอกว่ามันตีกันยังไง
นั่นเป็นเหตุผลที่จนถึงทุกวันนี้คีย์จึงถูกยกมาใน JSON
...
ECMAScript 5th Edition Standard แก้ไขสิ่งนี้ในการใช้งาน ES5 แม้กระทั่งคำสงวนก็สามารถใช้ได้โดยไม่ต้องใส่เครื่องหมายคำพูดทั้งในตัวอักษร Object และการเข้าถึงของสมาชิก ( obj.function
ตกลงใน ES5)
สำหรับการบันทึกมาตรฐานนี้ถูกนำไปใช้ในปัจจุบันโดยผู้จำหน่ายซอฟต์แวร์คุณสามารถดูว่าเบราว์เซอร์ใดรวมคุณลักษณะนี้ไว้ในตารางความเข้ากันได้นี้ (ดูคำสงวนเป็นชื่อคุณสมบัติ )