JSON (สัญลักษณ์วัตถุ JavaScript) เป็นรูปแบบน้ำหนักเบาที่ใช้สำหรับการแลกเปลี่ยนข้อมูล มันขึ้นอยู่กับส่วนย่อยของภาษา JavaScript (วิธีการสร้างวัตถุใน JavaScript) ตามที่ระบุใน MDN JavaScript บางตัวไม่ใช่ JSON และ JSON บางตัวไม่ใช่ JavaScript
ตัวอย่างการใช้งานนี้คือการตอบกลับการบริการเว็บ ในวัน 'เก่า' บริการเว็บใช้ XML เป็นรูปแบบข้อมูลหลักของพวกเขาสำหรับการส่งข้อมูลกลับ แต่เนื่องจาก JSON ปรากฏ ( รูปแบบ JSON ถูกระบุในRFC 4627โดย Douglas Crockford ) มันเป็นรูปแบบที่ต้องการมากกว่ามีน้ำหนักเบา
คุณสามารถหาข้อมูลมากขึ้นอย่างเป็นทางการในเว็บไซต์ JSON
JSON สร้างขึ้นด้วยสองโครงสร้าง:
- ชุดของคู่ชื่อ / ค่า ในภาษาต่างๆสิ่งนี้จะถูกรับรู้ในฐานะวัตถุ, บันทึก, โครงสร้าง, พจนานุกรม, ตารางแฮช, รายการคีย์หรืออาร์เรย์ที่เชื่อมโยง
- รายการสั่งซื้อของค่า ในภาษาส่วนใหญ่สิ่งนี้ถูกรับรู้เป็นอาร์เรย์เวกเตอร์รายการหรือลำดับ
โครงสร้าง JSON
นี่คือตัวอย่างของข้อมูล JSON:
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JSON ใน JavaScript
JSON (ใน Javascript) เป็นสตริง!
ผู้คนมักจะคิดว่าวัตถุ Javascript ทั้งหมดเป็น JSON และ JSON นั้นเป็นวัตถุ Javascript สิ่งนี้ไม่ถูกต้อง
ใน Javascript var x = {x:y}
คือไม่ JSONนี้เป็นวัตถุ Javascript ทั้งสองนั้นไม่เหมือนกัน JSON เทียบเท่า (แสดงในภาษาจาวาสคริปต์) var x = '{"x":"y"}'
จะเป็น x
เป็นวัตถุประเภทสตริงไม่ใช่วัตถุในสิทธิของตนเอง ที่จะเปิดนี้เป็นวัตถุ Javascript เต็มเปี่ยมแรกที่คุณจะต้องแยกมันvar x = JSON.parse('{"x":"y"}');
, x
คือตอนนี้วัตถุ แต่นี้ไม่ได้อีกต่อไป JSON
ดูJavascript object Vs JSON
เมื่อทำงานกับ JSON และ JavaScript คุณอาจถูกล่อลวงให้ใช้eval
ฟังก์ชันเพื่อประเมินผลลัพธ์ที่ส่งคืนในการเรียกกลับ แต่ไม่แนะนำเนื่องจากมีอักขระสองตัว (U + 2028 & U + 2029) ที่ถูกต้องใน JSON แต่ไม่ใช่ใน JavaScript (อ่านเพิ่มเติมได้ที่นี่ )
ดังนั้นจึงต้องพยายามใช้สคริปต์ของ Crockford ที่ตรวจสอบ JSON ที่ถูกต้องก่อนที่จะประเมิน ลิงก์ไปยังคำอธิบายสคริปต์พบได้ที่นี่และนี่คือลิงก์โดยตรงไปยังไฟล์ js เบราว์เซอร์หลัก ๆ ทุกวันนี้มีการใช้งานในลักษณะนี้
ตัวอย่างเกี่ยวกับวิธีใช้ตัวแยกวิเคราะห์ JSON (ด้วย json จากข้อมูลโค้ดด้านบน):
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
ตัวแยกวิเคราะห์ JSON ยังมีวิธีที่มีประโยชน์อีกวิธีหนึ่งเช่นstringify
กัน วิธีนี้ยอมรับวัตถุ JavaScript เป็นพารามิเตอร์และส่งกลับสตริงที่มีรูปแบบ JSON สิ่งนี้มีประโยชน์เมื่อคุณต้องการส่งข้อมูลกลับไปที่เซิร์ฟเวอร์:
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
สองวิธีข้างต้น ( parse
และstringify
) ใช้พารามิเตอร์ตัวที่สองซึ่งเป็นฟังก์ชั่นที่จะถูกเรียกใช้สำหรับทุกคีย์และค่าในทุกระดับของผลลัพธ์สุดท้ายและแต่ละค่าจะถูกแทนที่ด้วยผลลัพธ์ของฟังก์ชันอินพุตของคุณ (เพิ่มเติมที่นี่ )
Btw สำหรับคุณทุกคนที่คิดว่า JSON นั้นมีไว้สำหรับ JavaScript เท่านั้นลองอ่านโพสต์นี้เพื่ออธิบายและยืนยันเป็นอย่างอื่น
อ้างอิง