JSON เป็นหนึ่งในรูปแบบที่นิยมมากที่สุดในการแสดงข้อมูลเป็นข้อความ ตัวอย่างเช่น JSON ใช้เพื่อถ่ายโอนข้อมูลระหว่างส่วนหน้าและส่วนหลัง ในไฟล์การกำหนดค่า ในเกม ในโปรแกรมแก้ไขข้อความ และในพื้นที่อื่นๆ อีกมากมาย ในฐานะโปรแกรมเมอร์ คุณจะต้องเจอ JSON แน่นอน

แนะนำไวยากรณ์

มาดูรายการประเภทข้อมูลที่มีอยู่ใน JSON:

  1. สตริงคืออักขระใดๆ ที่อยู่ในอัญประกาศคู่:

    "ควอร์ตี้"
    "125 + 42"
    "จี"

    อักขระพิเศษจะถูกหลีกด้วยเครื่องหมายทับ:

    "บรรทัดแรก\nบรรทัดที่สอง"
    "เขาพูดว่า \"สวัสดี!\""
  2. ตัวเลข รวมทั้งจำนวนลบและจำนวนจริง ไม่มีคำพูด:

    18 -333 17.88 1.2e6
  3. ค่าบูลีนเป็นจริง / เท็จ (ไม่มีเครื่องหมายอัญประกาศ)

  4. nullคือค่ามาตรฐานที่ใช้แทนค่า "ไม่มีอะไร" ไม่มีการใช้เครื่องหมายคำพูดที่นี่

  5. Array - ประเภทนี้สามารถมีค่าของประเภทอื่น ๆ มันถูกห่อด้วยวงเล็บเหลี่ยม องค์ประกอบจะถูกคั่นด้วยเครื่องหมายจุลภาค:

    ["โค้ด", "ยิม", "โค้ดยิม", "¯\_(ツ)_/¯"]
    [จริง, จริง, เท็จ, จริง, เท็จ, เท็จ, เท็จ, เท็จ, เท็จ]
    [[1, 2], [3, 999, 4, -5], [77]]

    ตัวอย่างสุดท้ายคืออาร์เรย์ของอาร์เรย์

  6. วัตถุ — ประเภทที่ซับซ้อนนี้ใช้บ่อยที่สุด ประกอบด้วยคู่คีย์-ค่า โดยที่ค่าสามารถเป็นประเภทใดก็ได้ตามรายการด้านบน รวมถึงออบเจกต์อื่นๆ มันถูกห่อด้วยวงเล็บปีกกาและคั่นด้วยเครื่องหมายจุลภาค:

    
    {
     "name": "Dale",
     "age": 7
    }
    

การแสดงวัตถุ Java เป็น JSON

ทีนี้มาดูวัตถุ Java กันบ้างและดูว่า JSON มีลักษณะอย่างไร

ก่อนอื่นมากำหนดคลาส:


public class Human {
	String name;
	boolean male;
	int age;
	Set<Human> parents;

	public Human(String name, boolean male, int age) {
    	    this.name = name;
    	    this.male = male;
    	    this.age = age;
	}
}

ตอนนี้มาสร้างวัตถุของเรา:


	Human father = new Human("Peter", true, 31);
	Human mother = new Human("Mary", false, 28);
	mother.parents = new HashSet<>();
	Human son = new Human("Paul", true, 7);
	son.parents = Set.of(father, mother);

และตอนนี้ลองเป็นตัวแทนของลูกชายวัตถุให้ถูกต้องที่สุดในรูปแบบ JSON:

{
 "ชื่อ" : "พอล",
 "ชาย" : จริง,
 "อายุ" : 7,
 "พ่อแม่" : [
 {
   "ชื่อ" : "ปีเตอร์",
   "ชาย" : จริง,
   "อายุ" : 31,
   "พ่อแม่" : null
 },
 {
   "ชื่อ" : "มาเรีย",
   "ชาย" : เท็จ,
   "อายุ" : 28,
   "ผู้ปกครอง" : null
 }
]
}

ความคิดเห็นใน JSON

ทุกอย่างที่นี่เหมือนกับใน Java ทุกประการ ความคิดเห็นมีสองประเภท: // และ /*...*/ ฉันหวังว่าฉันไม่จำเป็นต้องเตือนคุณว่ามันแตกต่างกันอย่างไร?