JSON - คู่มือฉบับย่อ
JSON หรือ JavaScript Object Notation เป็นมาตรฐานเปิดแบบข้อความที่มีน้ำหนักเบาซึ่งออกแบบมาสำหรับการแลกเปลี่ยนข้อมูลที่มนุษย์อ่านได้ ข้อตกลงที่ใช้โดย JSON เป็นที่รู้จักสำหรับโปรแกรมเมอร์ซึ่งรวมถึง C, C ++, Java, Python, Perl และอื่น ๆ
JSON ย่อมาจาก JavaScript Object Notation
Douglas Crockford ระบุรูปแบบ
ได้รับการออกแบบมาเพื่อการแลกเปลี่ยนข้อมูลที่มนุษย์อ่านได้
ได้รับการขยายจากภาษาสคริปต์ JavaScript
นามสกุลไฟล์คือ .json.
ประเภท JSON Internet Media คือ application/json.
Uniform Type Identifier เป็น public.json
การใช้ JSON
ใช้ขณะเขียนแอปพลิเคชันที่ใช้ JavaScript ซึ่งมีส่วนขยายเบราว์เซอร์และเว็บไซต์
รูปแบบ JSON ใช้สำหรับการทำให้เป็นอนุกรมและส่งข้อมูลที่มีโครงสร้างผ่านการเชื่อมต่อเครือข่าย
ส่วนใหญ่จะใช้ในการส่งข้อมูลระหว่างเซิร์ฟเวอร์และเว็บแอปพลิเคชัน
บริการเว็บและ API ใช้รูปแบบ JSON เพื่อให้ข้อมูลสาธารณะ
สามารถใช้ได้กับภาษาโปรแกรมสมัยใหม่
ลักษณะของ JSON
- JSON อ่านและเขียนได้ง่าย
- เป็นรูปแบบการแลกเปลี่ยนข้อความที่มีน้ำหนักเบา
- JSON เป็นภาษาที่ไม่ขึ้นกับภาษา
ตัวอย่างง่ายๆใน JSON
ตัวอย่างต่อไปนี้แสดงวิธีใช้ JSON เพื่อจัดเก็บข้อมูลที่เกี่ยวข้องกับหนังสือตามหัวข้อและฉบับ
{
"book": [
{
"id":"01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id":"07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
หลังจากทำความเข้าใจกับโปรแกรมข้างต้นแล้วเราจะลองอีกตัวอย่างหนึ่ง มาบันทึกรหัสด้านล่างเป็นjson.htm -
<html>
<head>
<title>JSON example</title>
<script language = "javascript" >
var object1 = { "language" : "Java", "author" : "herbert schildt" };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Language = " + object1.language+"</h3>");
document.write("<h3>Author = " + object1.author+"</h3>");
var object2 = { "language" : "C++", "author" : "E-Balagurusamy" };
document.write("<br>");
document.write("<h3>Language = " + object2.language+"</h3>");
document.write("<h3>Author = " + object2.author+"</h3>");
document.write("<hr />");
document.write(object2.language + " programming language can be studied " + "from book written by " + object2.author);
document.write("<hr />");
</script>
</head>
<body>
</body>
</html>
ตอนนี้เรามาลองเปิด json.htm โดยใช้ IE หรือเบราว์เซอร์ที่เปิดใช้งานจาวาสคริปต์อื่น ๆ ที่ให้ผลลัพธ์ต่อไปนี้ -
คุณสามารถอ้างถึงบท JSON Objects สำหรับข้อมูลเพิ่มเติมเกี่ยวกับออบเจ็กต์ JSON
มาดูไวยากรณ์พื้นฐานของ JSON กัน โดยทั่วไปแล้วไวยากรณ์ JSON ถือเป็นส่วนย่อยของไวยากรณ์ JavaScript ซึ่งรวมถึงสิ่งต่อไปนี้ -
ข้อมูลจะแสดงในคู่ชื่อ / ค่า
วงเล็บปีกกาถือวัตถุและแต่ละชื่อตามด้วย ':' (โคลอน) คู่ของชื่อ / ค่าจะคั่นด้วย (ลูกน้ำ)
วงเล็บเหลี่ยมเก็บอาร์เรย์และค่าจะคั่นด้วย (ลูกน้ำ)
ด้านล่างนี้เป็นตัวอย่างง่ายๆ -
{
"book": [
{
"id": "01",
"language": "Java",
"edition": "third",
"author": "Herbert Schildt"
},
{
"id": "07",
"language": "C++",
"edition": "second",
"author": "E.Balagurusamy"
}
]
}
JSON รองรับโครงสร้างข้อมูลสองแบบต่อไปนี้ -
Collection of name/value pairs - โครงสร้างข้อมูลนี้รองรับภาษาโปรแกรมต่างๆ
Ordered list of values - ประกอบด้วยอาร์เรย์รายการเวกเตอร์หรือลำดับ ฯลฯ
รูปแบบ JSON รองรับประเภทข้อมูลต่อไปนี้ -
ซีเนียร์ | ประเภทและคำอธิบาย |
---|---|
1 | Number รูปแบบทศนิยมที่มีความแม่นยำสองเท่าใน JavaScript |
2 | String Unicode ที่ยกมาสองครั้งพร้อมแบ็กสแลช Escape |
3 | Boolean จริงหรือเท็จ |
4 | Array ลำดับของค่าที่เรียงลำดับ |
5 | Value อาจเป็นสตริงตัวเลขจริงหรือเท็จโมฆะเป็นต้น |
6 | Object คอลเลกชันที่ไม่เรียงลำดับของคู่คีย์: ค่า |
7 | Whitespace สามารถใช้ระหว่างโทเค็นคู่ใดก็ได้ |
8 | null ว่างเปล่า |
จำนวน
เป็นรูปแบบทศนิยมที่มีความแม่นยำสองเท่าใน JavaScript และขึ้นอยู่กับการนำไปใช้งาน
ไม่ใช้รูปแบบฐานแปดและฐานสิบหก
ไม่มีการใช้ NaN หรือ Infinity ใน Number
ตารางต่อไปนี้แสดงประเภทตัวเลข -
ซีเนียร์ | ประเภทและคำอธิบาย |
---|---|
1 | Integer ตัวเลข 1-9, 0 และบวกหรือลบ |
2 | Fraction เศษส่วนเช่น. 3, .9 |
3 | Exponent เลขชี้กำลังเช่น e, e +, e-, E, E +, E- |
ไวยากรณ์
var json-object-name = { string : number_value, .......}
ตัวอย่าง
ตัวอย่างการแสดง Number Datatype ค่าไม่ควรยกมา -
var obj = {marks: 97}
สตริง
เป็นลำดับของอักขระ Unicode ที่ยกมาเป็นศูนย์หรือมากกว่าสองตัวที่มีเครื่องหมายแบ็กสแลช
อักขระเป็นสตริงอักขระเดี่ยวเช่นสตริงที่มีความยาว 1
ตารางแสดงอักขระพิเศษต่างๆที่คุณสามารถใช้ในสตริงของเอกสาร JSON -
ซีเนียร์ | ประเภทและคำอธิบาย |
---|---|
1 | " ใบเสนอราคาคู่ |
2 | \ แบ็กสแลช |
3 | / สแลชไปข้างหน้า |
4 | b backspace |
5 | f ฟีดรูปแบบ |
6 | n บรรทัดใหม่ |
7 | r การกลับรถ |
8 | t แท็บแนวนอน |
9 | u เลขฐานสิบหกสี่หลัก |
ไวยากรณ์
var json-object-name = { string : "string value", .......}
ตัวอย่าง
ตัวอย่างการแสดง String Datatype -
var obj = {name: 'Amit'}
บูลีน
ประกอบด้วยค่าจริงหรือเท็จ
ไวยากรณ์
var json-object-name = { string : true/false, .......}
ตัวอย่าง
var obj = {name: 'Amit', marks: 97, distinction: true}
อาร์เรย์
เป็นการรวบรวมค่าตามลำดับ
สิ่งเหล่านี้อยู่ในวงเล็บเหลี่ยมซึ่งหมายความว่าอาร์เรย์ขึ้นต้นด้วย [. และลงท้ายด้วย.] ..
ค่าต่างๆจะถูกคั่นด้วย (ลูกน้ำ)
การจัดทำดัชนีอาร์เรย์สามารถเริ่มต้นได้ที่ 0 หรือ 1
ควรใช้อาร์เรย์เมื่อชื่อคีย์เป็นจำนวนเต็มตามลำดับ
ไวยากรณ์
[ value, .......]
ตัวอย่าง
ตัวอย่างการแสดงอาร์เรย์ที่มีหลายวัตถุ -
{
"books": [
{ "language":"Java" , "edition":"second" },
{ "language":"C++" , "lastName":"fifth" },
{ "language":"C" , "lastName":"third" }
]
}
วัตถุ
เป็นชุดคู่ชื่อ / ค่าที่ไม่เรียงลำดับ
ออบเจ็กต์อยู่ในวงเล็บปีกกานั่นคือเริ่มต้นด้วย "{" และลงท้ายด้วย "}"
แต่ละชื่อจะตามด้วย ":" (โคลอน) และคู่คีย์ / ค่าจะคั่นด้วย (ลูกน้ำ)
คีย์ต้องเป็นสตริงและควรเป็นคนละสาย
ควรใช้ออบเจ็กต์เมื่อชื่อคีย์เป็นสตริงที่กำหนดเอง
ไวยากรณ์
{ string : value, .......}
ตัวอย่าง
ตัวอย่างการแสดง Object -
{
"id": "011A",
"language": "JAVA",
"price": 500,
}
ช่องว่าง
สามารถแทรกระหว่างโทเค็นคู่ใดก็ได้ สามารถเพิ่มเพื่อให้โค้ดอ่านง่ายขึ้น ตัวอย่างแสดงการประกาศที่มีและไม่มีช่องว่าง -
ไวยากรณ์
{string:" ",....}
ตัวอย่าง
var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}
โมฆะ
มันหมายถึงประเภทที่ว่างเปล่า
ไวยากรณ์
null
ตัวอย่าง
var i = null;
if(i == 1) {
document.write("<h1>value is 1</h1>");
} else {
document.write("<h1>value is null</h1>");
}
ค่า JSON
ประกอบด้วย -
- ตัวเลข (จำนวนเต็มหรือทศนิยม)
- string
- boolean
- array
- object
- null
ไวยากรณ์
String | Number | Object | Array | TRUE | FALSE | NULL
ตัวอย่าง
var i = 1;
var j = "sachin";
var k = null;
การสร้างวัตถุอย่างง่าย
ออบเจ็กต์ JSON สามารถสร้างได้ด้วย JavaScript ให้เราดูวิธีต่างๆในการสร้างวัตถุ JSON โดยใช้ JavaScript -
- การสร้างวัตถุว่างเปล่า -
var JSONObj = {};
- การสร้างวัตถุใหม่ -
var JSONObj = new Object();
การสร้างวัตถุที่มีคุณลักษณะ bookname ด้วยค่าในสตริงแอตทริบิวต์ priceด้วยค่าตัวเลข เข้าถึงแอตทริบิวต์ได้โดยใช้ "." ตัวดำเนินการ -
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };
นี่คือตัวอย่างที่แสดงการสร้างวัตถุในจาวาสคริปต์โดยใช้ JSON บันทึกรหัสด้านล่างเป็น json_object.htm -
<html>
<head>
<title>Creating Object JSON with JavaScript</title>
<script language = "javascript" >
var JSONObj = { "name" : "tutorialspoint.com", "year" : 2005 };
document.write("<h1>JSON with JavaScript example</h1>");
document.write("<br>");
document.write("<h3>Website Name = "+JSONObj.name+"</h3>");
document.write("<h3>Year = "+JSONObj.year+"</h3>");
</script>
</head>
<body>
</body>
</html>
ตอนนี้เรามาลองเปิดJson Objectโดยใช้ IE หรือเบราว์เซอร์อื่น ๆ ที่เปิดใช้งาน javaScript จะให้ผลลัพธ์ดังต่อไปนี้ -
การสร้าง Array Objects
ตัวอย่างต่อไปนี้แสดงการสร้างวัตถุอาร์เรย์ในจาวาสคริปต์โดยใช้ JSON บันทึกโค้ดด้านล่างเป็น json_array_object.htm -
<html>
<head>
<title>Creation of array object in javascript using JSON</title>
<script language = "javascript" >
document.writeln("<h2>JSON array object</h2>");
var books = { "Pascal" : [
{ "Name" : "Pascal Made Simple", "price" : 700 },
{ "Name" : "Guide to Pascal", "price" : 400 }],
"Scala" : [
{ "Name" : "Scala for the Impatient", "price" : 1000 },
{ "Name" : "Scala in Depth", "price" : 1300 }]
}
var i = 0
document.writeln("<table border = '2'><tr>");
for(i = 0;i<books.Pascal.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Pascal[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Pascal[i].price +"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
for(i = 0;i<books.Scala.length;i++) {
document.writeln("<td>");
document.writeln("<table border = '1' width = 100 >");
document.writeln("<tr><td><b>Name</b></td><td width = 50>" + books.Scala[i].Name+"</td></tr>");
document.writeln("<tr><td><b>Price</b></td><td width = 50>" + books.Scala[i].price+"</td></tr>");
document.writeln("</table>");
document.writeln("</td>");
}
document.writeln("</tr></table>");
</script>
</head>
<body>
</body>
</html>
ตอนนี้เรามาลองเปิดJson Array Objectโดยใช้ IE หรือเบราว์เซอร์อื่น ๆ ที่เปิดใช้งาน javaScript จะให้ผลลัพธ์ดังต่อไปนี้ -
JSON Schema เป็นข้อกำหนดสำหรับรูปแบบที่ใช้ JSON สำหรับการกำหนดโครงสร้างของข้อมูล JSON ถูกเขียนภายใต้ร่าง IETF ซึ่งหมดอายุในปี 2554 สคีมา JSON -
- อธิบายรูปแบบข้อมูลที่มีอยู่ของคุณ
- เอกสารที่ชัดเจนมนุษย์และเครื่องอ่านได้
- การตรวจสอบโครงสร้างที่สมบูรณ์มีประโยชน์สำหรับการทดสอบอัตโนมัติ
- ตรวจสอบโครงสร้างที่สมบูรณ์ตรวจสอบความถูกต้องของข้อมูลที่ลูกค้าส่งมา
ไลบรารีการตรวจสอบสคีมา JSON
ปัจจุบันมีตัวตรวจสอบความถูกต้องหลายตัวสำหรับภาษาโปรแกรมต่างๆ ปัจจุบันเครื่องมือตรวจสอบสคีมา JSON ที่สมบูรณ์และสอดคล้องที่สุดที่มีอยู่คือ JSV
ภาษา | ห้องสมุด |
---|---|
ค | WJElement (LGPLv3) |
Java | json-schema-validator (LGPLv3) |
.สุทธิ | Json.NET (MIT) |
ActionScript 3 | ฟริกกา (MIT) |
Haskell | aeson-schema (MIT) |
Python | Jsonschema |
ทับทิม | อัตโนมัติ (ASL 2.0); ทับทิม jsonschema (MIT) |
PHP | php-json-schema (MIT) json-schema (เบิร์กลีย์) |
JavaScript | เป็นระเบียบ (BSD); JSV; json-schema; มาติค (MIT); โดโจ; Persevere (แก้ไข BSD หรือ AFL 2.0); schema.js |
ตัวอย่างสคีมา JSON
ด้านล่างนี้เป็นสคีมา JSON พื้นฐานซึ่งครอบคลุมคำอธิบายแคตตาล็อกผลิตภัณฑ์แบบคลาสสิก -
{
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "Product",
"description": "A product from Acme's catalog",
"type": "object",
"properties": {
"id": {
"description": "The unique identifier for a product",
"type": "integer"
},
"name": {
"description": "Name of the product",
"type": "string"
},
"price": {
"type": "number",
"minimum": 0,
"exclusiveMinimum": true
}
},
"required": ["id", "name", "price"]
}
ลองตรวจสอบคำหลักที่สำคัญต่างๆที่สามารถใช้ในสคีมานี้ -
ซีเนียร์ | คำหลักและคำอธิบาย |
---|---|
1 | $schema คีย์เวิร์ด $ schema ระบุว่าสคีมานี้เขียนตามข้อกำหนด v4 แบบร่าง |
2 | title คุณจะใช้สิ่งนี้เพื่อตั้งชื่อให้กับสคีมาของคุณ |
3 | description คำอธิบายเล็กน้อยของสคีมา |
4 | type คีย์เวิร์ด type กำหนดข้อ จำกัด แรกในข้อมูล JSON ของเรา: ต้องเป็น JSON Object |
5 | properties กำหนดคีย์ต่างๆและประเภทค่าค่าต่ำสุดและสูงสุดที่จะใช้ในไฟล์ JSON |
6 | required สิ่งนี้จะเก็บรายการคุณสมบัติที่จำเป็น |
7 | minimum นี่คือข้อ จำกัด ที่ต้องใส่ค่าและแสดงถึงค่าต่ำสุดที่ยอมรับได้ |
8 | exclusiveMinimum หากมี "exclusiveMinimum" และมีค่าบูลีนเป็นจริงอินสแตนซ์จะใช้ได้หากมีค่ามากกว่าค่า "ต่ำสุด" อย่างเคร่งครัด |
9 | maximum นี่คือข้อ จำกัด ที่ต้องใส่ค่าและแสดงถึงค่าสูงสุดที่ยอมรับได้ |
10 | exclusiveMaximum หากมี "exclusiveMaximum" และมีค่าบูลีนเป็นจริงอินสแตนซ์นั้นจะใช้ได้ถ้าค่าต่ำกว่าค่า "สูงสุด" อย่างเคร่งครัด |
11 | multipleOf อินสแตนซ์ตัวเลขใช้ได้กับ "multipleOf" ถ้าผลลัพธ์ของการแบ่งอินสแตนซ์ตามค่าของคีย์เวิร์ดนี้เป็นจำนวนเต็ม |
12 | maxLength ความยาวของอินสแตนซ์สตริงถูกกำหนดเป็นจำนวนอักขระสูงสุด |
13 | minLength ความยาวของอินสแตนซ์สตริงถูกกำหนดเป็นจำนวนอักขระขั้นต่ำ |
14 | pattern อินสแตนซ์สตริงจะถือว่าถูกต้องหากนิพจน์ทั่วไปตรงกับอินสแตนซ์สำเร็จ |
คุณสามารถตรวจสอบไฟล์ http://json-schema.orgสำหรับรายการคีย์เวิร์ดทั้งหมดที่สามารถใช้ในการกำหนดสคีมา JSON สคีมาข้างต้นสามารถใช้เพื่อทดสอบความถูกต้องของรหัส JSON ต่อไปนี้ -
[
{
"id": 2,
"name": "An ice sculpture",
"price": 12.50,
},
{
"id": 3,
"name": "A blue mouse",
"price": 25.50,
}
]
JSON และ XML เป็นรูปแบบที่มนุษย์อ่านได้และเป็นภาษาที่ไม่ขึ้นต่อกัน ทั้งคู่สนับสนุนการสร้างการอ่านและการถอดรหัสในสถานการณ์จริง เราสามารถเปรียบเทียบ JSON กับ XML โดยพิจารณาจากปัจจัยต่อไปนี้ -
Verbose
XML มีรายละเอียดมากกว่า JSON ดังนั้นจึงเขียน JSON สำหรับโปรแกรมเมอร์ได้เร็วกว่า
การใช้อาร์เรย์
XML ใช้เพื่ออธิบายข้อมูลที่มีโครงสร้างซึ่งไม่รวมอาร์เรย์ในขณะที่ JSON รวมอาร์เรย์
การแยกวิเคราะห์
วิธีการevalของ JavaScript จะแยกวิเคราะห์ JSON เมื่อนำไปใช้กับ JSON จะส่งคืนออบเจ็กต์ที่อธิบายไว้
ตัวอย่าง
ตัวอย่างส่วนบุคคลของ XML และ JSON -
JSON
{
"company": Volkswagen,
"name": "Vento",
"price": 800000
}
XML
<car>
<company>Volkswagen</company>
<name>Vento</name>
<price>800000</price>
</car>
บทนี้ครอบคลุมถึงวิธีการเข้ารหัสและถอดรหัสออบเจ็กต์ JSON โดยใช้ภาษาโปรแกรม PHP เริ่มจากเตรียมสภาพแวดล้อมเพื่อเริ่มการเขียนโปรแกรมด้วย PHP สำหรับ JSON
สิ่งแวดล้อม
ตั้งแต่ PHP 5.2.0 ส่วนขยาย JSON จะรวมและคอมไพล์เป็น PHP ตามค่าเริ่มต้น
ฟังก์ชัน JSON
ฟังก์ชัน | ห้องสมุด |
---|---|
json_encode | ส่งกลับการแสดงค่า JSON ของค่า |
json_decode | ถอดรหัสสตริง JSON |
json_last_error | ส่งกลับข้อผิดพลาดล่าสุดที่เกิดขึ้น |
การเข้ารหัส JSON ใน PHP (json_encode)
ฟังก์ชัน PHP json_encode () ใช้สำหรับการเข้ารหัส JSON ใน PHP ฟังก์ชันนี้ส่งคืนการแสดงค่า JSON ของค่าความสำเร็จหรือ FALSE เมื่อล้มเหลว
ไวยากรณ์
string json_encode ( $value [, $options = 0 ] )
พารามิเตอร์
value- ค่าที่เข้ารหัส ฟังก์ชันนี้ใช้ได้กับข้อมูลที่เข้ารหัส UTF-8 เท่านั้น
options - ค่าที่ไม่บังคับนี้คือ bitmask ซึ่งประกอบด้วย JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีการแปลงอาร์เรย์เป็น JSON ด้วย PHP -
<?php
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
echo json_encode($arr);
?>
ขณะดำเนินการสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
{"a":1,"b":2,"c":3,"d":4,"e":5}
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าออบเจ็กต์ PHP สามารถแปลงเป็น JSON ได้อย่างไร -
<?php
class Emp {
public $name = "";
public $hobbies = ""; public $birthdate = "";
}
$e = new Emp(); $e->name = "sachin";
$e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p");
$e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e);
?>
ขณะดำเนินการสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
การถอดรหัส JSON ใน PHP (json_decode)
ฟังก์ชัน PHP json_decode () ใช้สำหรับถอดรหัส JSON ใน PHP ฟังก์ชันนี้ส่งคืนค่าที่ถอดรหัสจาก json เป็นประเภท PHP ที่เหมาะสม
ไวยากรณ์
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
Paramaters
json_string - เป็นสตริงที่เข้ารหัสซึ่งต้องเป็นข้อมูลที่เข้ารหัส UTF-8
assoc - เป็นพารามิเตอร์ประเภทบูลีนเมื่อตั้งค่าเป็น TRUE วัตถุที่ส่งคืนจะถูกแปลงเป็นอาร์เรย์ที่เชื่อมโยงกัน
depth - เป็นพารามิเตอร์ประเภทจำนวนเต็มซึ่งระบุความลึกของการเรียกซ้ำ
options - เป็น bitmask ประเภทจำนวนเต็มของการถอดรหัส JSON รองรับ JSON_BIGINT_AS_STRING
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า PHP สามารถใช้ถอดรหัสออบเจ็กต์ JSON ได้อย่างไร -
<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
var_dump(json_decode($json, true));
?>
ขณะดำเนินการจะให้ผลลัพธ์ดังต่อไปนี้ -
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
บทนี้ครอบคลุมถึงวิธีการเข้ารหัสและถอดรหัสออบเจ็กต์ JSON โดยใช้ภาษาโปรแกรม Perl เริ่มต้นด้วยการเตรียมสภาพแวดล้อมเพื่อเริ่มการเขียนโปรแกรมของเราด้วย Perl สำหรับ JSON
สิ่งแวดล้อม
ก่อนที่คุณจะเริ่มเข้ารหัสและถอดรหัส JSON โดยใช้ Perl คุณต้องติดตั้งโมดูล JSON ซึ่งสามารถรับได้จาก CPAN เมื่อคุณดาวน์โหลด JSON-2.53.tar.gz หรือเวอร์ชันล่าสุดอื่น ๆ แล้วให้ทำตามขั้นตอนด้านล่างนี้ -
$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install
ฟังก์ชัน JSON
ฟังก์ชัน | ห้องสมุด |
---|---|
encode_json | แปลงโครงสร้างข้อมูล Perl ที่กำหนดให้เป็นสตริงไบนารีที่เข้ารหัส UTF-8 |
decode_json | ถอดรหัสสตริง JSON |
to_json | แปลงโครงสร้างข้อมูล Perl ที่กำหนดให้เป็นสตริง json |
from_json | คาดหวังสตริง json และพยายามแยกวิเคราะห์โดยส่งคืนการอ้างอิงที่เป็นผลลัพธ์ |
Convert_blessed | ใช้ฟังก์ชันนี้กับค่าจริงเพื่อให้ Perl สามารถใช้เมธอด TO_JSON บนคลาสของอ็อบเจ็กต์เพื่อแปลงอ็อบเจ็กต์เป็น JSON |
การเข้ารหัส JSON ใน Perl (encode_json)
ฟังก์ชัน Perl encode_json () จะแปลงโครงสร้างข้อมูล Perl ที่กำหนดให้เป็นสตริงไบนารีที่เข้ารหัส UTF-8
ไวยากรณ์
$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงอาร์เรย์ภายใต้ JSON พร้อม Perl -
#!/usr/bin/perl
use JSON;
my %rec_hash = ('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
my $json = encode_json \%rec_hash; print "$json\n";
ขณะดำเนินการสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
{"e":5,"c":3,"a":1,"b":2,"d":4}
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า Perl ออบเจ็กต์สามารถแปลงเป็น JSON ได้อย่างไร -
#!/usr/bin/perl
package Emp;
sub new {
my $class = shift; my $self = {
name => shift,
hobbies => shift,
birthdate => shift,
};
bless $self, $class;
return $self; } sub TO_JSON { return { %{ shift() } }; } package main; use JSON; my $JSON = JSON->new->utf8;
$JSON->convert_blessed(1); $e = new Emp( "sachin", "sports", "8/5/1974 12:20:03 pm");
$json = $JSON->encode($e); print "$json\n";
ในการดำเนินการจะให้ผลลัพธ์ดังต่อไปนี้ -
{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}
การถอดรหัส JSON ใน Perl (decode_json)
ฟังก์ชัน Perl decode_json () ใช้สำหรับถอดรหัส JSON ใน Perl ฟังก์ชันนี้จะส่งคืนค่าที่ถอดรหัสจาก json เป็นประเภท Perl ที่เหมาะสม
ไวยากรณ์
$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงวิธีใช้ Perl เพื่อถอดรหัสออบเจ็กต์ JSON ที่นี่คุณจะต้องติดตั้งโมดูล Data :: Dumper หากคุณยังไม่มีในเครื่องของคุณ
#!/usr/bin/perl
use JSON;
use Data::Dumper;
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; $text = decode_json($json); print Dumper($text);
ในการดำเนินการจะให้ผลลัพธ์ดังต่อไปนี้ -
$VAR1 = {
'e' => 5,
'c' => 3,
'a' => 1,
'b' => 2,
'd' => 4
};
บทนี้ครอบคลุมถึงวิธีการเข้ารหัสและถอดรหัสออบเจ็กต์ JSON โดยใช้ภาษาโปรแกรม Python เริ่มต้นด้วยการเตรียมสภาพแวดล้อมเพื่อเริ่มการเขียนโปรแกรมของเราด้วย Python สำหรับ JSON
สิ่งแวดล้อม
ก่อนที่คุณจะเริ่มต้นด้วยการเข้ารหัสและถอดรหัส JSON โดยใช้ Python คุณต้องติดตั้งโมดูล JSON ที่มี สำหรับบทช่วยสอนนี้เราได้ดาวน์โหลดและติดตั้งDemjsonดังนี้ -
$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install
ฟังก์ชัน JSON
ฟังก์ชัน | ห้องสมุด |
---|---|
เข้ารหัส | เข้ารหัสออบเจ็กต์ Python ในการแสดงสตริง JSON |
ถอดรหัส | ถอดรหัสสตริงที่เข้ารหัส JSON เป็นวัตถุ Python |
การเข้ารหัส JSON ใน Python (เข้ารหัส)
ฟังก์ชันการเข้ารหัส Python () เข้ารหัสวัตถุ Python เป็นการแสดงสตริง JSON
ไวยากรณ์
demjson.encode(self, obj, nest_level=0)
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงอาร์เรย์ภายใต้ JSON ด้วย Python
#!/usr/bin/python
import demjson
data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]
json = demjson.encode(data)
print json
ขณะดำเนินการสิ่งนี้จะให้ผลลัพธ์ดังต่อไปนี้ -
[{"a":1,"b":2,"c":3,"d":4,"e":5}]
การถอดรหัส JSON ใน Python (ถอดรหัส)
Python สามารถใช้ฟังก์ชัน demjson.decode () สำหรับการถอดรหัส JSON ฟังก์ชันนี้ส่งคืนค่าที่ถอดรหัสจาก json เป็นประเภท Python ที่เหมาะสม
ไวยากรณ์
demjson.decode(self, txt)
ตัวอย่าง
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า Python สามารถใช้ถอดรหัสออบเจ็กต์ JSON ได้อย่างไร
#!/usr/bin/python
import demjson
json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = demjson.decode(json)
print text
ในการดำเนินการจะให้ผลลัพธ์ดังต่อไปนี้ -
{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}
บทนี้ครอบคลุมถึงวิธีการเข้ารหัสและถอดรหัสออบเจ็กต์ JSON โดยใช้ภาษาโปรแกรม Ruby เริ่มจากการเตรียมสภาพแวดล้อมเพื่อเริ่มการเขียนโปรแกรมด้วย Ruby for JSON
สิ่งแวดล้อม
ก่อนที่คุณจะเริ่มต้นด้วยการเข้ารหัสและถอดรหัส JSON โดยใช้ Ruby คุณต้องติดตั้งโมดูล JSON ที่มีให้สำหรับ Ruby คุณอาจต้องติดตั้ง Ruby gem แต่ถ้าคุณใช้ Ruby เวอร์ชันล่าสุดคุณจะต้องติดตั้ง gem ไว้แล้วในเครื่องของคุณมิฉะนั้นให้ทำตามขั้นตอนเดียวต่อไปนี้โดยสมมติว่าคุณติดตั้ง gem ไว้แล้ว -
$gem install json
การแยกวิเคราะห์ JSON โดยใช้ Ruby
ตัวอย่างต่อไปนี้แสดงให้เห็นว่า 2 คีย์แรกเก็บค่าสตริงและ 3 คีย์สุดท้ายเก็บอาร์เรย์ของสตริง มาเก็บเนื้อหาต่อไปนี้ไว้ในไฟล์ชื่อinput.json.
{
"President": "Alan Isaac",
"CEO": "David Richardson",
"India": [
"Sachin Tendulkar",
"Virender Sehwag",
"Gautam Gambhir"
],
"Srilanka": [
"Lasith Malinga",
"Angelo Mathews",
"Kumar Sangakkara"
],
"England": [
"Alastair Cook",
"Jonathan Trott",
"Kevin Pietersen"
]
}
ด้านล่างนี้เป็นโปรแกรม Ruby ที่จะใช้ในการแยกวิเคราะห์เอกสาร JSON ที่กล่าวถึงข้างต้น -
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'
json = File.read('input.json')
obj = JSON.parse(json)
pp obj
ในการดำเนินการจะให้ผลลัพธ์ดังต่อไปนี้ -
{
"President"=>"Alan Isaac",
"CEO"=>"David Richardson",
"India"=>
["Sachin Tendulkar", "Virender Sehwag", "Gautam Gambhir"],
"Srilanka"=>
["Lasith Malinga ", "Angelo Mathews", "Kumar Sangakkara"],
"England"=>
["Alastair Cook", "Jonathan Trott", "Kevin Pietersen"]
}
บทนี้ครอบคลุมถึงวิธีการเข้ารหัสและถอดรหัสออบเจ็กต์ JSON โดยใช้ภาษาโปรแกรม Java เริ่มต้นด้วยการเตรียมสภาพแวดล้อมเพื่อเริ่มการเขียนโปรแกรมด้วย Java สำหรับ JSON
สิ่งแวดล้อม
ก่อนที่คุณจะเริ่มต้นด้วยการเข้ารหัสและถอดรหัส JSON โดยใช้ Java คุณต้องติดตั้งโมดูล JSON ที่มีอยู่ สำหรับบทช่วยสอนนี้เราได้ดาวน์โหลดและติดตั้งJSON.simpleและได้เพิ่มตำแหน่งของไฟล์json-simple-1.1.1.jar ไฟล์ไปยังตัวแปรสภาพแวดล้อม CLASSPATH
การแมประหว่างเอนทิตี JSON และ Java
JSON แผนที่เอนทิตีแบบง่ายจากด้านซ้ายไปทางด้านขวาขณะถอดรหัสหรือแยกวิเคราะห์และแมปเอนทิตีจากขวาไปซ้ายขณะเข้ารหัส
JSON | Java |
---|---|
สตริง | java.lang.String |
จำนวน | java.lang.Number |
จริง | เท็จ | java.lang.Boolean |
โมฆะ | โมฆะ |
อาร์เรย์ | java.util.List |
วัตถุ | java.util.Map |
เมื่อวันที่ถอดรหัสชั้นคอนกรีตเริ่มต้นของjava.util.Listเป็นorg.json.simple.JSONArrayและชั้นคอนกรีตเริ่มต้นของjava.util.Mapเป็นorg.json.simple.JSONObject
การเข้ารหัส JSON ใน Java
ต่อไปนี้เป็นตัวอย่างง่ายๆในการเข้ารหัสออบเจ็กต์ JSON โดยใช้ Java JSONObject ซึ่งเป็นคลาสย่อยของ java.util.HashMap ไม่มีการสั่งซื้อ หากคุณต้องการลำดับองค์ประกอบที่เข้มงวดให้ใช้เมธอด JSONValue.toJSONString (แผนที่) พร้อมกับการใช้งานแผนที่แบบสั่งเช่น java.util.LinkedHashMap
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
ในการคอมไพล์และรันโปรแกรมข้างต้นผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
ต่อไปนี้เป็นอีกตัวอย่างหนึ่งที่แสดงการสตรีมวัตถุ JSON โดยใช้ Java JSONObject -
import org.json.simple.JSONObject;
class JsonEncodeDemo {
public static void main(String[] args) {
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
ในการคอมไพล์และรันโปรแกรมข้างต้นผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
การถอดรหัส JSON ใน Java
ตัวอย่างต่อไปนี้ใช้ประโยชน์จาก JSONObject และ JSONArray โดยที่ JSONObject คือ java.util.Map และ JSONArray เป็น java.util.List ดังนั้นคุณจึงสามารถเข้าถึงได้ด้วยการดำเนินการมาตรฐานของแผนที่หรือรายการ
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo {
public static void main(String[] args) {
JSONParser parser = new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s = "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe) {
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
ในการคอมไพล์และรันโปรแกรมข้างต้นผลลัพธ์ต่อไปนี้จะถูกสร้างขึ้น -
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
AJAX คือ Asynchronous JavaScript และ XML ซึ่งใช้ในฝั่งไคลเอ็นต์เป็นกลุ่มของเทคนิคการพัฒนาเว็บที่สัมพันธ์กันเพื่อสร้างเว็บแอปพลิเคชันแบบอะซิงโครนัส ตามแบบจำลอง AJAX เว็บแอปพลิเคชันสามารถส่งและดึงข้อมูลจากเซิร์ฟเวอร์แบบอะซิงโครนัสโดยไม่รบกวนการแสดงผลและลักษณะการทำงานของเพจที่มีอยู่
นักพัฒนาจำนวนมากใช้ JSON เพื่อส่งผ่านการอัปเดต AJAX ระหว่างไคลเอนต์และเซิร์ฟเวอร์ เว็บไซต์ที่อัปเดตผลการแข่งขันสดถือได้ว่าเป็นตัวอย่างของ AJAX หากต้องอัปเดตคะแนนเหล่านี้บนเว็บไซต์จะต้องจัดเก็บคะแนนเหล่านี้ไว้บนเซิร์ฟเวอร์เพื่อให้เว็บเพจสามารถเรียกดูคะแนนได้เมื่อจำเป็น นี่คือที่ที่เราสามารถใช้ประโยชน์จากข้อมูลที่จัดรูปแบบ JSON
ข้อมูลใด ๆ ที่อัพเดตโดยใช้ AJAX สามารถจัดเก็บโดยใช้รูปแบบ JSON บนเว็บเซิร์ฟเวอร์ AJAX ถูกใช้เพื่อให้ javascript สามารถดึงไฟล์ JSON เหล่านี้ได้เมื่อจำเป็นแยกวิเคราะห์และดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้ -
เก็บค่าที่แยกวิเคราะห์ไว้ในตัวแปรสำหรับการประมวลผลเพิ่มเติมก่อนที่จะแสดงบนเว็บเพจ
จะกำหนดข้อมูลให้กับองค์ประกอบ DOM ในหน้าเว็บโดยตรงเพื่อให้แสดงบนเว็บไซต์
ตัวอย่าง
โค้ดต่อไปนี้แสดง JSON พร้อม AJAX บันทึกเป็นไฟล์ajax.htmไฟล์. ที่นี่ฟังก์ชั่นการโหลด loadJSON () ใช้แบบอะซิงโครนัสเพื่ออัปโหลดข้อมูล JSON
<html>
<head>
<meta content = "text/html; charset = ISO-8859-1" http-equiv = "content-type">
<script type = "application/javascript">
function loadJSON() {
var data_file = "http://www.tutorialspoint.com/json/data.json";
var http_request = new XMLHttpRequest();
try{
// Opera 8.0+, Firefox, Chrome, Safari
http_request = new XMLHttpRequest();
}catch (e) {
// Internet Explorer Browsers
try{
http_request = new ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
http_request.onreadystatechange = function() {
if (http_request.readyState == 4 ) {
// Javascript function JSON.parse to parse JSON data
var jsonObj = JSON.parse(http_request.responseText);
// jsonObj variable now contains the data structure and can
// be accessed as jsonObj.name and jsonObj.country.
document.getElementById("Name").innerHTML = jsonObj.name;
document.getElementById("Country").innerHTML = jsonObj.country;
}
}
http_request.open("GET", data_file, true);
http_request.send();
}
</script>
<title>tutorialspoint.com JSON</title>
</head>
<body>
<h1>Cricketer Details</h1>
<table class = "src">
<tr><th>Name</th><th>Country</th></tr>
<tr><td><div id = "Name">Sachin</div></td>
<td><div id = "Country">India</div></td></tr>
</table>
<div class = "central">
<button type = "button" onclick = "loadJSON()">Update Details </button>
</div>
</body>
</html>
ด้านล่างเป็นไฟล์อินพุต data.jsonมีข้อมูลในรูปแบบ JSON ซึ่งจะถูกอัปโหลดแบบอะซิงโครนัสเมื่อเราคลิกไฟล์ Update Detailปุ่ม. ไฟล์นี้ถูกเก็บไว้ในhttp://www.tutorialspoint.com/json/
{"name": "Brett", "country": "Australia"}
โค้ด HTML ด้านบนจะสร้างหน้าจอต่อไปนี้ซึ่งคุณสามารถตรวจสอบการทำงานของ AJAX ได้ -
รายละเอียดคริกเก็ต
ชื่อ | ประเทศ |
---|---|
ซาชิน
|
อินเดีย
|
เมื่อคุณคลิกที่ไฟล์ Update Detailคุณควรได้รับผลลัพธ์ดังนี้ คุณสามารถลองใช้JSON กับ AJAX ได้ด้วยตัวเองหากเบราว์เซอร์ของคุณรองรับ Javascript
รายละเอียดคริกเก็ต
ชื่อ | ประเทศ |
---|---|
Brett
|
ออสเตรเลีย
|