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
ออสเตรเลีย