JSON - Hướng dẫn nhanh

JSON hoặc JavaScript Object Notation là một tiêu chuẩn mở dựa trên văn bản nhẹ được thiết kế để trao đổi dữ liệu mà con người có thể đọc được. Các quy ước được sử dụng bởi JSON được các lập trình viên biết đến, bao gồm C, C ++, Java, Python, Perl, v.v.

  • JSON là viết tắt của JavaScript Object Notation.

  • Định dạng do Douglas Crockford chỉ định.

  • Nó được thiết kế để trao đổi dữ liệu có thể đọc được của con người.

  • Nó đã được mở rộng từ ngôn ngữ kịch bản JavaScript.

  • Phần mở rộng tên tệp là .json.

  • Loại phương tiện Internet JSON mới là application/json.

  • Định danh Loại thống nhất là public.json.

Công dụng của JSON

  • Nó được sử dụng trong khi viết các ứng dụng dựa trên JavaScript bao gồm các tiện ích mở rộng trình duyệt và trang web.

  • Định dạng JSON được sử dụng để tuần tự hóa và truyền dữ liệu có cấu trúc qua kết nối mạng.

  • Nó chủ yếu được sử dụng để truyền dữ liệu giữa máy chủ và các ứng dụng web.

  • Các dịch vụ web và API sử dụng định dạng JSON để cung cấp dữ liệu công khai.

  • Nó có thể được sử dụng với các ngôn ngữ lập trình hiện đại.

Đặc điểm của JSON

  • JSON rất dễ đọc và viết.
  • Nó là một định dạng trao đổi dựa trên văn bản nhẹ.
  • JSON độc lập với ngôn ngữ.

Ví dụ đơn giản trong JSON

Ví dụ sau đây cho thấy cách sử dụng JSON để lưu trữ thông tin liên quan đến sách dựa trên chủ đề và ấn bản của chúng.

{
   "book": [
	
      {
         "id":"01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      },
	
      {
         "id":"07",
         "language": "C++",
         "edition": "second",
         "author": "E.Balagurusamy"
      }
   ]
}

Sau khi hiểu chương trình trên, chúng ta sẽ thử một ví dụ khác. Hãy lưu đoạn mã dưới đây thànhjson.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>

Bây giờ, hãy thử mở json.htm bằng IE hoặc bất kỳ trình duyệt hỗ trợ javascript nào khác tạo ra kết quả sau:

Bạn có thể tham khảo chương Đối tượng JSON để biết thêm thông tin về các đối tượng JSON.

Chúng ta hãy xem nhanh cú pháp cơ bản của JSON. Cú pháp JSON về cơ bản được coi là một tập con của cú pháp JavaScript; nó bao gồm những điều sau -

  • Dữ liệu được biểu diễn trong các cặp tên / giá trị.

  • Dấu ngoặc nhọn giữ các đối tượng và mỗi tên được theo sau bởi ':' (dấu hai chấm), các cặp tên / giá trị được phân tách bằng dấu, (dấu phẩy).

  • Dấu ngoặc vuông giữ các mảng và các giá trị được phân tách bằng dấu, (dấu phẩy).

Dưới đây là một ví dụ đơn giản -

{
   "book": [

      {
         "id": "01",
         "language": "Java",
         "edition": "third",
         "author": "Herbert Schildt"
      },

      {
         "id": "07",
         "language": "C++",
         "edition": "second",
         "author": "E.Balagurusamy"
      }

   ]
}

JSON hỗ trợ hai cấu trúc dữ liệu sau:

  • Collection of name/value pairs - Cấu trúc dữ liệu này được hỗ trợ bởi các ngôn ngữ lập trình khác nhau.

  • Ordered list of values - Nó bao gồm mảng, danh sách, vectơ hoặc chuỗi, v.v.

Định dạng JSON hỗ trợ các kiểu dữ liệu sau:

Sr.No. Loại & Mô tả
1

Number

định dạng dấu phẩy động chính xác kép trong JavaScript

2

String

dấu ngoặc kép Unicode với thoát dấu gạch chéo ngược

3

Boolean

đúng hay sai

4

Array

một chuỗi giá trị có thứ tự

5

Value

nó có thể là một chuỗi, một số, đúng hoặc sai, null, v.v.

6

Object

một bộ sưu tập không có thứ tự các cặp khóa: giá trị

7

Whitespace

có thể được sử dụng giữa bất kỳ cặp mã thông báo nào

số 8

null

trống

Con số

  • Nó là một định dạng dấu phẩy động chính xác gấp đôi trong JavaScript và nó phụ thuộc vào việc triển khai.

  • Định dạng bát phân và thập lục phân không được sử dụng.

  • Không có NaN hoặc Infinity được sử dụng trong Số.

Bảng sau đây cho thấy các loại số:

Sr.No. Loại & Mô tả
1

Integer

Chữ số 1-9, 0 và dương hoặc âm

2

Fraction

Các phân số như .3, .9

3

Exponent

Số mũ như e, e +, e-, E, E +, E-

Cú pháp

var json-object-name = { string : number_value, .......}

Thí dụ

Ví dụ hiển thị Kiểu dữ liệu số, giá trị không được trích dẫn -

var obj = {marks: 97}

Chuỗi

  • Nó là một chuỗi không hoặc nhiều ký tự Unicode được trích dẫn kép có dấu gạch chéo ngược thoát ra ngoài.

  • Ký tự là một chuỗi ký tự đơn tức là một chuỗi có độ dài 1.

Bảng hiển thị các ký tự đặc biệt khác nhau mà bạn có thể sử dụng trong các chuỗi của tài liệu JSON -

Sr.No. Loại & Mô tả
1

"

báo giá kép

2

\

dấu gạch chéo ngược

3

/

dấu gạch chéo

4

b

xóa lùi

5

f

thức ăn dạng

6

n

dòng mới

7

r

vận chuyển trở lại

số 8

t

Tab ngang

9

u

bốn chữ số thập lục phân

Cú pháp

var json-object-name = { string : "string value", .......}

Thí dụ

Ví dụ hiển thị Kiểu dữ liệu chuỗi -

var obj = {name: 'Amit'}

Boolean

Nó bao gồm các giá trị đúng hoặc sai.

Cú pháp

var json-object-name = { string : true/false, .......}

Thí dụ

var obj = {name: 'Amit', marks: 97, distinction: true}

Mảng

  • Nó là một tập hợp các giá trị có thứ tự.

  • Chúng được đặt trong dấu ngoặc vuông có nghĩa là mảng bắt đầu bằng. [. và kết thúc bằng.] ..

  • Các giá trị được phân tách bằng dấu, (dấu phẩy).

  • Lập chỉ mục mảng có thể được bắt đầu từ 0 hoặc 1.

  • Mảng nên được sử dụng khi tên khóa là số nguyên liên tiếp.

Cú pháp

[ value, .......]

Thí dụ

Ví dụ hiển thị mảng chứa nhiều đối tượng -

{
   "books": [
      { "language":"Java" , "edition":"second" },
      { "language":"C++" , "lastName":"fifth" },
      { "language":"C" , "lastName":"third" }
   ]
}

Vật

  • Nó là một tập hợp các cặp tên / giá trị không có thứ tự.

  • Các đối tượng được đặt trong dấu ngoặc nhọn, nó bắt đầu bằng '{' và kết thúc bằng '}'.

  • Mỗi tên được theo sau bởi ':' (dấu hai chấm) và các cặp khóa / giá trị được phân tách bằng dấu, (dấu phẩy).

  • Các phím phải là chuỗi và phải khác nhau.

  • Đối tượng nên được sử dụng khi tên khóa là chuỗi tùy ý.

Cú pháp

{ string : value, .......}

Thí dụ

Ví dụ hiển thị Đối tượng -

{
   "id": "011A",
   "language": "JAVA",
   "price": 500,
}

Khoảng trắng

Nó có thể được chèn vào giữa bất kỳ cặp mã thông báo nào. Nó có thể được thêm vào để làm cho mã dễ đọc hơn. Ví dụ hiển thị khai báo có và không có khoảng trắng -

Cú pháp

{string:" ",....}

Thí dụ

var obj1 = {"name": "Sachin Tendulkar"}
var obj2 = {"name": "SauravGanguly"}

vô giá trị

Nó có nghĩa là loại trống.

Cú pháp

null

Thí dụ

var i = null;

if(i == 1) {
   document.write("<h1>value is 1</h1>");
} else {
   document.write("<h1>value is null</h1>");
}

Giá trị JSON

Nó bao gồm -

  • số (số nguyên hoặc dấu phẩy động)
  • string
  • boolean
  • array
  • object
  • null

Cú pháp

String | Number | Object | Array | TRUE | FALSE | NULL

Thí dụ

var i = 1;
var j = "sachin";
var k = null;

Tạo các đối tượng đơn giản

Các đối tượng JSON có thể được tạo bằng JavaScript. Hãy để chúng tôi xem các cách khác nhau để tạo các đối tượng JSON bằng JavaScript -

  • Tạo một đối tượng rỗng -
var JSONObj = {};
  • Tạo một đối tượng mới -
var JSONObj = new Object();
  • Tạo một đối tượng có thuộc tính bookname với giá trị trong chuỗi, thuộc tính pricevới giá trị số. Thuộc tính được truy cập bằng cách sử dụng '.' Nhà điều hành -

var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

Đây là một ví dụ cho thấy việc tạo một đối tượng trong javascript bằng cách sử dụng JSON, hãy lưu mã bên dưới dưới dạng 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>

Bây giờ chúng ta hãy thử mở Json Object bằng IE hoặc bất kỳ trình duyệt hỗ trợ javaScript nào khác. Nó tạo ra kết quả sau:

Tạo đối tượng mảng

Ví dụ sau cho thấy việc tạo một đối tượng mảng trong javascript bằng cách sử dụng JSON, hãy lưu mã bên dưới dưới dạng 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>

Bây giờ chúng ta hãy thử mở Json Array Object bằng IE hoặc bất kỳ trình duyệt hỗ trợ javaScript nào khác. Nó tạo ra kết quả sau:

Lược đồ JSON là một đặc tả cho định dạng dựa trên JSON để xác định cấu trúc của dữ liệu JSON. Nó được viết theo bản nháp IETF đã hết hạn vào năm 2011. Lược đồ JSON -

  • Mô tả định dạng dữ liệu hiện có của bạn.
  • Tài liệu rõ ràng, người và máy có thể đọc được.
  • Hoàn thành xác nhận cấu trúc, hữu ích cho kiểm tra tự động.
  • Hoàn thành xác thực cấu trúc, xác thực dữ liệu do khách hàng gửi.

Thư viện xác thực lược đồ JSON

Có một số trình xác thực hiện có sẵn cho các ngôn ngữ lập trình khác nhau. Hiện tại, trình xác thực lược đồ JSON tuân thủ và hoàn chỉnh nhất hiện có là JSV.

Ngôn ngữ Thư viện
C WJElement (LGPLv3)
Java json-schema-validator (LGPLv3)
.MẠNG LƯỚI Json.NET (MIT)
ActionScript 3 Frigga (MIT)
Haskell aeson-schema (MIT)
Python Jsonschema
Ruby tự động phân tích (ASL 2.0); ruby-jsonschema (MIT)
PHP php-json-schema (MIT). json-schema (Berkeley)
JavaScript Có trật tự (BSD); JSV; json-giản đồ; Matic (MIT); Võ đường; Kiên trì (BSD sửa đổi hoặc AFL 2.0); schema.js.

Ví dụ về lược đồ JSON

Dưới đây là giản đồ JSON cơ bản, bao gồm mô tả danh mục sản phẩm cổ điển -

{
   "$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"]
}

Hãy kiểm tra các từ khóa quan trọng khác nhau có thể được sử dụng trong lược đồ này -

Sr.No. Từ khoá & Mô tả
1

$schema

Từ khóa $ schema nói rằng lược đồ này được viết theo đặc điểm kỹ thuật phiên bản nháp.

2

title

Bạn sẽ sử dụng điều này để đặt tiêu đề cho lược đồ của mình.

3

description

Mô tả một chút về lược đồ.

4

type

Từ khóa type xác định ràng buộc đầu tiên đối với dữ liệu JSON của chúng tôi: nó phải là một Đối tượng JSON.

5

properties

Xác định các khóa khác nhau và các loại giá trị của chúng, giá trị tối thiểu và tối đa sẽ được sử dụng trong tệp JSON.

6

required

Điều này giữ một danh sách các thuộc tính cần thiết.

7

minimum

Đây là ràng buộc được đặt trên giá trị và đại diện cho giá trị chấp nhận được tối thiểu.

số 8

exclusiveMinimum

Nếu "uniqueMinimum" có mặt và có giá trị boolean true, thì trường hợp hợp lệ nếu nó lớn hơn giá trị của "tối thiểu".

9

maximum

Đây là ràng buộc được đặt trên giá trị và đại diện cho giá trị tối đa có thể chấp nhận được.

10

exclusiveMaximum

Nếu "uniqueMaximum" có mặt và có giá trị boolean true, thì phiên bản hợp lệ nếu nó thấp hơn giá trị của "tối đa".

11

multipleOf

Một cá thể số hợp lệ với "multipleOf" nếu kết quả của phép chia cá thể cho giá trị của từ khóa này là một số nguyên.

12

maxLength

Độ dài của một cá thể chuỗi được định nghĩa là số ký tự tối đa của nó.

13

minLength

Độ dài của một cá thể chuỗi được xác định là số ký tự tối thiểu của nó.

14

pattern

Một cá thể chuỗi được coi là hợp lệ nếu biểu thức chính quy khớp với cá thể đó thành công.

Bạn có thể kiểm tra một http://json-schema.orgđể có danh sách đầy đủ các từ khóa có thể được sử dụng để xác định lược đồ JSON. Lược đồ trên có thể được sử dụng để kiểm tra tính hợp lệ của mã JSON sau:

[
   {
      "id": 2,
      "name": "An ice sculpture",
      "price": 12.50,
   },
	
   {
      "id": 3,
      "name": "A blue mouse",
      "price": 25.50,
   }
]

JSON và XML là các định dạng con người có thể đọc được và không phụ thuộc vào ngôn ngữ. Cả hai đều có hỗ trợ tạo, đọc và giải mã trong các tình huống thực tế. Chúng ta có thể so sánh JSON với XML, dựa trên các yếu tố sau:

Dài dòng

XML dài dòng hơn JSON, vì vậy việc viết JSON cho lập trình viên sẽ nhanh hơn.

Sử dụng mảng

XML được sử dụng để mô tả dữ liệu có cấu trúc, dữ liệu này không bao gồm các mảng trong khi JSON bao gồm các mảng.

Phân tích cú pháp

Phương thức eval của JavaScript phân tích cú pháp JSON. Khi được áp dụng cho JSON, eval trả về đối tượng được mô tả.

Thí dụ

Các ví dụ riêng lẻ về XML và JSON -

JSON

{
   "company": Volkswagen,
   "name": "Vento",
   "price": 800000
}

XML

<car>
   <company>Volkswagen</company>
   <name>Vento</name>
   <price>800000</price>
</car>

Chương này trình bày cách mã hóa và giải mã các đối tượng JSON bằng ngôn ngữ lập trình PHP. Hãy bắt đầu với việc chuẩn bị môi trường để bắt đầu lập trình với PHP cho JSON.

Môi trường

As of PHP 5.2.0, the JSON extension is bundled and compiled into PHP by default.

JSON Functions

Function Libraries
json_encode Returns the JSON representation of a value.
json_decode Decodes a JSON string.
json_last_error Returns the last error occurred.

Encoding JSON in PHP (json_encode)

PHP json_encode() function is used for encoding JSON in PHP. This function returns the JSON representation of a value on success or FALSE on failure.

Syntax

string json_encode ( $value [, $options = 0 ] )

Parameters

  • value − The value being encoded. This function only works with UTF-8 encoded data.

  • options − This optional value is a bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT.

Example

The following example shows how to convert an array into JSON with PHP −

<?php
   $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
   echo json_encode($arr);
?>

While executing, this will produce the following result −

{"a":1,"b":2,"c":3,"d":4,"e":5}

The following example shows how the PHP objects can be converted into 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);
?>

While executing, this will produce the following result −

{"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}

Decoding JSON in PHP (json_decode)

PHP json_decode() function is used for decoding JSON in PHP. This function returns the value decoded from json to appropriate PHP type.

Syntax

mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])

Paramaters

  • json_string − It is an encoded string which must be UTF-8 encoded data.

  • assoc − It is a boolean type parameter, when set to TRUE, returned objects will be converted into associative arrays.

  • depth − It is an integer type parameter which specifies recursion depth

  • options − It is an integer type bitmask of JSON decode, JSON_BIGINT_AS_STRING is supported.

Example

The following example shows how PHP can be used to decode JSON objects −

<?php
   $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json));
   var_dump(json_decode($json, true));
?>

While executing, it will produce the following result −

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)
}

This chapter covers how to encode and decode JSON objects using Perl programming language. Let's start with preparing the environment to start our programming with Perl for JSON.

Environment

Before you start encoding and decoding JSON using Perl, you need to install JSON module, which can be obtained from CPAN. Once you downloaded JSON-2.53.tar.gz or any other latest version, follow the steps mentioned below −

$tar xvfz JSON-2.53.tar.gz
$cd JSON-2.53 $perl Makefile.PL
$make $make install

JSON Functions

Function Libraries
encode_json Converts the given Perl data structure to a UTF-8 encoded, binary string.
decode_json Decodes a JSON string.
to_json Converts the given Perl data structure to a json string.
from_json Expects a json string and tries to parse it, returning the resulting reference.
convert_blessed Use this function with true value so that Perl can use TO_JSON method on the object's class to convert an object into JSON.

Encoding JSON in Perl (encode_json)

Perl encode_json() function converts the given Perl data structure to a UTF-8 encoded, binary string.

Syntax

$json_text = encode_json ($perl_scalar );
or
$json_text = JSON->new->utf8->encode($perl_scalar);

Example

The following example shows arrays under JSON with 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";

While executing, this will produce the following result −

{"e":5,"c":3,"a":1,"b":2,"d":4}

The following example shows how Perl objects can be converted into 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";

On executing, it will produce the following result −

{"birthdate":"8/5/1974 12:20:03 pm","name":"sachin","hobbies":"sports"}

Decoding JSON in Perl (decode_json)

Perl decode_json() function is used for decoding JSON in Perl. This function returns the value decoded from json to an appropriate Perl type.

Syntax

$perl_scalar = decode_json $json_text
or
$perl_scalar = JSON->new->utf8->decode($json_text)

Example

The following example shows how Perl can be used to decode JSON objects. Here you will need to install Data::Dumper module if you already do not have it on your machine.

#!/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);

On executing, it will produce following result −

$VAR1 = {
   'e' => 5,
   'c' => 3,
   'a' => 1,
   'b' => 2,
   'd' => 4
};

This chapter covers how to encode and decode JSON objects using Python programming language. Let's start with preparing the environment to start our programming with Python for JSON.

Environment

Before you start with encoding and decoding JSON using Python, you need to install any of the JSON modules available. For this tutorial we have downloaded and installed Demjson as follows −

$tar xvfz demjson-1.6.tar.gz
$cd demjson-1.6 $python setup.py install

JSON Functions

Function Libraries
encode Encodes the Python object into a JSON string representation.
decode Decodes a JSON-encoded string into a Python object.

Encoding JSON in Python (encode)

Python encode() function encodes the Python object into a JSON string representation.

Syntax

demjson.encode(self, obj, nest_level=0)

Example

The following example shows arrays under JSON with Python.

#!/usr/bin/python
import demjson

data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ]

json = demjson.encode(data)
print json

While executing, this will produce the following result −

[{"a":1,"b":2,"c":3,"d":4,"e":5}]

Decoding JSON in Python (decode)

Python can use demjson.decode() function for decoding JSON. This function returns the value decoded from json to an appropriate Python type.

Syntax

demjson.decode(self, txt)

Example

The following example shows how Python can be used to decode JSON objects.

#!/usr/bin/python
import demjson

json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

text = demjson.decode(json)
print  text

On executing, it will produce the following result −

{u'a': 1, u'c': 3, u'b': 2, u'e': 5, u'd': 4}

This chapter covers how to encode and decode JSON objects using Ruby programming language. Let's start with preparing the environment to start our programming with Ruby for JSON.

Environment

Before you start with encoding and decoding JSON using Ruby, you need to install any of the JSON modules available for Ruby. You may need to install Ruby gem, but if you are running latest version of Ruby then you must have gem already installed on your machine, otherwise let's follow the following single step assuming you already have gem installed −

$gem install json

Parsing JSON using Ruby

The following example shows that the first 2 keys hold string values and the last 3 keys hold arrays of strings. Let's keep the following content in a file called 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"
   ]
	
}

Given below is a Ruby program that will be used to parse the above mentioned JSON document −

#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'pp'

json = File.read('input.json')
obj = JSON.parse(json)

pp obj

On executing, it will produce the following result −

{
   "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"]
}

This chapter covers how to encode and decode JSON objects using Java programming language. Let's start with preparing the environment to start our programming with Java for JSON.

Environment

Before you start with encoding and decoding JSON using Java, you need to install any of the JSON modules available. For this tutorial we have downloaded and installed JSON.simple and have added the location of json-simple-1.1.1.jar file to the environment variable CLASSPATH.

Mapping between JSON and Java entities

JSON.simple maps entities from the left side to the right side while decoding or parsing, and maps entities from the right to the left while encoding.

JSON Java
string java.lang.String
number java.lang.Number
true|false java.lang.Boolean
null null
array java.util.List
object java.util.Map

On decoding, the default concrete class of java.util.List is org.json.simple.JSONArray and the default concrete class of java.util.Map is org.json.simple.JSONObject.

Encoding JSON in Java

Following is a simple example to encode a JSON object using Java JSONObject which is a subclass of java.util.HashMap. No ordering is provided. If you need the strict ordering of elements, use JSONValue.toJSONString ( map ) method with ordered map implementation such as 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);
   }
}

On compiling and executing the above program the following result will be generated −

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

Following is another example that shows a JSON object streaming using 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);
   }
}

On compiling and executing the above program, the following result is generated −

{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}

Decoding JSON in Java

The following example makes use of JSONObject and JSONArray where JSONObject is a java.util.Map and JSONArray is a java.util.List, so you can access them with standard operations of Map or 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);
      }
   }
}

On compiling and executing the above program, the following result will be generated −

The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}

Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]

AJAX is Asynchronous JavaScript and XML, which is used on the client side as a group of interrelated web development techniques, in order to create asynchronous web applications. According to the AJAX model, web applications can send and retrieve data from a server asynchronously without interfering with the display and the behavior of the existing page.

Many developers use JSON to pass AJAX updates between the client and the server. Websites updating live sports scores can be considered as an example of AJAX. If these scores have to be updated on the website, then they must be stored on the server so that the webpage can retrieve the score when it is required. This is where we can make use of JSON formatted data.

Any data that is updated using AJAX can be stored using the JSON format on the web server. AJAX is used so that javascript can retrieve these JSON files when necessary, parse them, and perform one of the following operations −

  • Store the parsed values in the variables for further processing before displaying them on the webpage.

  • It directly assigns the data to the DOM elements in the webpage, so that they are displayed on the website.

Example

The following code shows JSON with AJAX. Save it as ajax.htm file. Here the loading function loadJSON() is used asynchronously to upload JSON data.

<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>

Given below is the input file data.json, having data in JSON format which will be uploaded asynchronously when we click the Update Detail button. This file is being kept in http://www.tutorialspoint.com/json/

{"name": "Brett", "country": "Australia"}

The above HTML code will generate the following screen, where you can check AJAX in action −

Cricketer Details

Name Country
Sachin
India

When you click on the Update Detail button, you should get a result something as follows. You can try JSON with AJAX yourself, provided your browser supports Javascript.

Cricketer Details

Name Country
Brett
Australia