JSON (ย่อมาจาก JavaScript Object Notation แปลว่า สัญกรณ์วัตถุจาวาสคริปต์) เป็นรูปแบบ (format) การแลกเปลี่ยนข้อมูลอย่างง่าย[1]
ใน Minecraft สามารถพบรูปแบบ JSON ได้ในการเก็บข้อมูลดังต่อไปนี้
- ข้อความในหนังสือที่เขียนแล้ว ป้าย ชื่อที่กำหนดเอง และคำสั่ง
/tellraw
,/title
,/bossbar
,/scoreboard
และ/team
[รุ่น Java เท่านั้น] - ไฟล์
pack.mcmeta
ที่อธิบายรีซอร์ซแพ็กและดาต้าแพ็กในรุ่น Java - ไฟล์
manifest.json
ที่อธิบายแอดออนในรุ่น Bedrock - ไฟล์ในรีซอร์ซแพ็กที่ใช้กำหนดโมเดล เสียงตามเหตุการณ์ UI และอื่น ๆ[รุ่น Bedrock เท่านั้น]
- ไฟล์ในบีเฮฟวิเออร์แพ็ก (behavior pack) ที่ใช้กำหนดพฤติกรรมของเอนทีตี้ พฤติกรรมของบล็อก พฤติกรรมของไอเทม และอื่น ๆ[รุ่น Bedrock เท่านั้น]
- ความก้าวหน้าและสถิติ (ใน
.minecraft/saves/*/data/stats/*.json
) - ข้อมูลโปรไฟล์สำหรับลันเชอร์ (ใน
.minecraft/launcher_profiles.json
) - ข้อมูลเกี่ยวกับเวอร์ชันที่ดาวน์โหลด (ใน
.minecraft/versions/*/*.json
) - ไฟล์ในดาต้าแพ็กที่ใช้กำหนดความก้าวหน้า ลูตเทเบิล แท็ก สูตร มิติ ประเภทมิติ และเพรดิเคต[รุ่น Java เท่านั้น]
รูปแบบกฎเกณฑ์[]
ประเภทข้อมูล[]
ไฟล์ JSON ต้องประกอบไปด้วยค่า JSON ซึ่งสามารถใช้เป็นข้อมูลประเภทใดประเภทหนึ่งต่อไปนี้ ได้แก่ สตริง ตัวเลข วัตถุ อาร์เรย์ และบูลีน นอกจากนี้ไฟล์ JSON สามารถเป็นรูปแบบบรรทัดเดียวได้ (single line) อย่างไรก็ตามนิยมใช้เป็นย่อหน้าและการขึ้นบรรทัดใหม่เพื่อทำให้ไฟล์ JSON ที่มีความยาวมากสามารถอ่านได้ง่าย
สตริง[]
สตริง (string) จะถูกกำหนดขอบเขตด้วยเครื่องหมายคำพูด (" "
) และประกอบไปด้วยอักขระต่าง ๆ ทั้งนี้อักขระพิเศษบางตัวต้องมีการหลบหลีกโดยการใช้เครื่องหมายแบ็กสแลช (\
)
"foo"
"Hello, world"
"เครื่องหมายคำพูด \" ที่ต้องหลบหลีกภายในสตริง"
ตัวเลข[]
ตัวเลข (number) สามารถกำหนดเป็นตัวเลขใดก็ได้ โดยตัวเลขนี้สามารถเป็นตัวเลขที่ไม่ใช่จำนวนเต็มซึ่งบ่งชี้ด้วยการใช้เครื่องหมายจุด และเป็นเลขยกกำลังด้วยการใช้สัญลักษณ์ e
ได้เช่นกัน
2
-0.5
3e6
(=3×106)
วัตถุ[]
วัตถุ (object) สามารถหมายถึงส่วนประกอบ (compound) ได้เช่นกัน ซึ่งถูกกำหนดขอบเขตด้วยวงเล็บปีกกา ({ }
) ที่ภายในมีคู่คีย์/ค่าข้อมูล คู่เหล่านี้สามารถแยกกันได้โดยใช้เครื่องหมายจุลภาค (,
) ส่วนคีย์และค่าข้อมูลที่เกี่ยวข้องจะถูกแยกด้วยเครื่องหมายจุดคู่ (:
) ทั้งนี้แต่ละคู่จะมีคีย์ที่ต้องมีชื่อที่ใช้เฉพาะภายในวัตถุนั้น ส่วนค่าข้อมูลสามารถเป็นข้อมูลประเภทใดก็ได้ (อาจเป็นวัตถุอื่นได้เช่นกัน)
{
"Bob": {
"ID": 1234,
"lastName": "Ramsay"
},
"Alice": {
"ID": 2345,
"lastName": "Berg"
}
}
อาร์เรย์[]
อาร์เรย์ (array) จะถูกกำหนดขอบเขตด้วยวงเล็บเหลี่ยม ([ ]
) และสามารถเป็นค่าข้อมูลประเภทใดก็ได้โดยจะต้องแยกกันด้วยเครื่องหมายจุลภาค (,
) ซึ่งไม่เหมือนกับรายการใน NBT ค่าข้อมูลในอาร์เรย์ JSON สามารถใช้เป็นประเภทข้อมูลที่แตกต่างกันได้
["Bob", "Alice", "Carlos", "Eve"]
บูลีน[]
บูลีน (boolean) อาจเป็น true
หรือ false
ก็ได้
{
"Steve": {
"isAlive": true
},
"Alex": {
"isAlive": false
}
}