Json-quick-guide

提供:Dev Guides
移動先:案内検索

JSON-概要

JSONまたはJavaScript Object Notationは、人間が読めるデータ交換のために設計された軽量のテキストベースのオープンスタンダードです。 JSONで使用される規則は、C、C ++、Java、Python、Perlなどのプログラマーに知られています。

  • JSONはJavaScript Object Notationの略です。
  • 形式は、ダグラス・クロックフォードによって指定されました。
  • 人間が読めるデータ交換のために設計されました。
  • JavaScriptスクリプト言語から拡張されています。
  • ファイル名の拡張子は .json です。
  • JSONインターネットメディアタイプは application/json です。
  • Uniform Type Identifierはpublic.jsonです。

JSONの使用

  • ブラウザの拡張機能やWebサイトを含むJavaScriptベースのアプリケーションを作成するときに使用されます。
  • JSON形式は、ネットワーク接続を介した構造化データのシリアル化と送信に使用されます。
  • 主に、サーバーとWebアプリケーション間でデータを送信するために使用されます。
  • Webサービスと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 として保存しましょう-

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

ここで、IEまたは次の結果を生成する他のJavaScript対応ブラウザーを使用してjsonを開こうとします-

jsonサンプルデモ

JSONオブジェクトの詳細については、JSONオブジェクトの章を参照してください。

JSON-構文

JSONの基本的な構文を簡単に見てみましょう。 JSON構文は、基本的にJavaScript構文のサブセットと見なされます。以下が含まれます-

  • データは名前と値のペアで表されます。
  • 中括弧はオブジェクトを保持し、各名前の後に「:」(コロン)が続き、名前/値のペアは、(コンマ)で区切られます。
  • 角括弧は配列を保持し、値は、(コンマ)で区切られます。

以下は簡単な例です-

{
   "book": [

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

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

   ]
}

JSONは次の2つのデータ構造をサポートしています-

  • 名前/値のペアのコレクション-このデータ構造は、さまざまなプログラミング言語でサポートされています。
  • 値の順序付きリスト-配列、リスト、ベクトル、シーケンスなどが含まれます。

JSON-データ型

JSON形式は次のデータ型をサポートしています-

Sr.No. Type & Description
1

Number

JavaScriptの倍精度浮動小数点形式

2

String

バックスラッシュをエスケープする二重引用符付きUnicode

3

Boolean

正しいか間違っているか

4

Array

値の順序付けられたシーケンス

5

Value

文字列、数値、trueまたはfalse、nullなどを指定できます

6

Object

キーと値のペアの順不同のコレクション

7

Whitespace

トークンの任意のペア間で使用できます

8

null

空の

  • JavaScriptの倍精度浮動小数点形式であり、実装に依存します。
  • 8進形式および16進形式は使用されません。 *NumberではNaNまたはInfinityは使用されません。

次の表は、番号の種類を示しています-

Sr.No. Type & Description
1
  • Integer*

数字1-9、0および正または負

2 Fraction
3

Exponent

e、e +、e-、E、E +、E-のような指数

構文

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

数値データ型を示す例、値は引用符で囲まないでください-

var obj = {marks: 97}

ひも

  • これは、バックスラッシュをエスケープした0個以上の二重引用符で囲まれたUnicode文字のシーケンスです。 *文字は単一の文字列です。 長さ1の文字列。

表には、JSONドキュメントの文字列で使用できるさまざまな特殊文字が表示されます-

Sr.No. Type & Description
1
  • "*

二重引用符

2

\

バックスラッシュ

3

/

スラッシュ

4

b

バックスペース

5

f

フォームフィード

6

n

改行

7

r

キャリッジリターン

8

t

水平タブ

9

u

4桁の16進数

構文

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

文字列データ型を示す例-

var obj = {name: 'Amit'}

ブール値

trueまたはfalseの値が含まれます。

構文

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, .......}

オブジェクトを示す例-

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

空白

トークンの任意のペアの間に挿入できます。 コードを読みやすくするために追加できます。 例は、空白ありとなしの宣言を示しています-

構文

{string:" ",....}

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

null

空のタイプを意味します。

構文

null

var i = null;

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

JSON値

それが含まれています-

  • 数値(整数または浮動小数点)
  • ひも
  • ブール値
  • アレイ
  • null

構文

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

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

JSON-オブジェクト

単純なオブジェクトの作成

JSONオブジェクトはJavaScriptで作成できます。 JavaScriptを使用してJSONオブジェクトを作成するさまざまな方法を見てみましょう-

  • 空のオブジェクトの作成-
var JSONObj = {};
  • 新しいオブジェクトの作成-
var JSONObj = new Object();
  • 文字列に値を持つ属性 bookname 、数値を持つ属性 price を持つオブジェクトの作成。 「。」を使用して属性にアクセスします演算子-
var JSONObj = { "bookname ":"VB BLACK BOOK", "price":500 };

これは、JSONを使用してJavaScriptでオブジェクトを作成する例です。以下のコードを json_object として保存します-

<html>
   <head>
      <title>Creating Object JSON with JavaScript</title>
      <script language = "javascript" >
         var JSONObj = { "name" : "finddevguides.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>

次に、IEまたはその他のjavaScript対応ブラウザーを使用してlink:/json/json_object [Json Object]を開こうとします。 それは次の結果を生成します-

Json Objects

配列オブジェクトの作成

次の例は、JSONを使用してJavaScriptで配列オブジェクトを作成する方法を示しています。以下のコードを json_array_object として保存します-

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

次に、IEまたはその他のjavaScript対応ブラウザーを使用してlink:/json/json_array_object [Json Array Object]を開こうとします。 それは次の結果を生成します-

json配列オブジェクト

JSON-スキーマ

JSONスキーマは、JSONデータの構造を定義するためのJSONベースの形式の仕様です。 2011年に失効したIETFドラフトの下で作成されました。 JSONスキーマ-

  • 既存のデータ形式について説明します。
  • 人間および機械が読み取り可能な明確なドキュメント。
  • 自動テストに役立つ完全な構造検証。 *クライアントが送信したデータを検証する完全な構造検証。

JSONスキーマ検証ライブラリ

現在、さまざまなプログラミング言語で使用できる検証ツールがいくつかあります。 現在、最も完全で準拠しているJSONスキーマバリデーターはJSVです。

Languages Libraries
C WJElement (LGPLv3)
Java json-schema-validator (LGPLv3)
.NET Json.NET (MIT)
ActionScript 3 Frigga (MIT)
Haskell aeson-schema (MIT)
Python Jsonschema
Ruby autoparse (ASL 2.0); ruby-jsonschema (MIT)
PHP php-json-schema (MIT). json-schema (Berkeley)
JavaScript Orderly (BSD); JSV; json-schema; Matic (MIT); Dojo; Persevere (modified BSD or 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"]
}

このスキーマで使用できるさまざまな重要なキーワードを確認しましょう-

Sr.No. Keyword & Description
1
  • $schema*

$ schemaキーワードは、このスキーマがドラフトv4仕様に従って記述されていることを示しています。

2

title

これを使用して、スキーマにタイトルを付けます。

3

description

スキーマの簡単な説明。

4

type

typeキーワードは、JSONデータの最初の制約を定義します:JSONオブジェクトでなければなりません。

5

properties

JSONファイルで使用されるさまざまなキーとその値タイプ、最小値と最大値を定義します。

6

required

これにより、必要なプロパティのリストが保持されます。

7

minimum

これは値に課される制約であり、最小許容値を表します。

8

exclusiveMinimum

「exclusiveMinimum」が存在し、ブール値がtrueである場合、インスタンスが「minimum」の値より厳密に大きい場合、インスタンスは有効です。

9

maximum

これは値に課される制約であり、最大許容値を表します。

10

exclusiveMaximum

「exclusiveMaximum」が存在し、ブール値がtrueの場合、インスタンスが「maximum」の値より厳密に低い場合、インスタンスは有効です。

11

multipleOf

このキーワードの値によるインスタンスの除算の結果が整数である場合、数値インスタンスは「multipleOf」に対して有効です。

12

maxLength

文字列インスタンスの長さは、その文字の最大数として定義されます。

13

minLength

文字列インスタンスの長さは、その文字の最小数として定義されます。

14

pattern

文字列インスタンスは、正規表現がインスタンスと正常に一致した場合に有効と見なされます。

JSONスキーマの定義に使用できるキーワードの完全なリストは、http://json-schema.org/latest/json-schema-validationl [http://json-schema.org]で確認できます。 上記のスキーマは、次のJSONコードの有効性をテストするために使用できます-

[
   {
      "id": 2,
      "name": "An ice sculpture",
      "price": 12.50,
   },

   {
      "id": 3,
      "name": "A blue mouse",
      "price": 25.50,
   }
]

JSON-XMLとの比較

JSONとXMLは人間が読める形式であり、言語に依存しません。 どちらも、実世界の状況で作成、読み取り、およびデコードをサポートしています。 次の要因に基づいて、JSONとXMLを比較できます-

冗長

XMLはJSONよりも冗長であるため、プログラマー向けにJSONを記述する方が高速です。

配列の使用法

JSONは配列を含むのに対し、XMLは配列を含まない構造化データの記述に使用されます。

構文解析

JavaScriptの_eval_メソッドはJSONを解析します。 JSONに適用すると、evalは記述されたオブジェクトを返します。

XMLとJSONの個々の例-

JSON

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

XML

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

PHPを使用したJSON

この章では、PHPプログラミング言語を使用してJSONオブジェクトをエンコードおよびデコードする方法について説明します。 JSON for PHPでプログラミングを開始するための環境の準備から始めましょう。

環境

PHP 5.2.0以降、JSON拡張機能はデフォルトでバンドルされ、PHPにコンパイルされます。

JSON関数

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.

PHPでのJSONのエンコード(json_encode)

PHP json_encode()関数は、PHPでJSONをエンコードするために使用されます。 この関数は、成功すると値のJSON表現を返し、失敗するとFALSEを返します。

構文

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

パラメーター

  • -エンコードされる値。 この関数は、UTF-8でエンコードされたデータでのみ機能します。
  • オプション-このオプション値は、JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS、JSON_NUMERIC_CHECK、JSON_PRETTY_PRINT、JSON_UNESCAPED_SLASHES、JSON_FORCE_OBJECTで構成されるビットマスクです。

次の例は、PHPで配列をJSONに変換する方法を示しています-

<?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"}

PHPでのJSONのデコード(json_decode)

PHP json_decode()関数は、PHPでJSONをデコードするために使用されます。 この関数は、jsonからデコードされた値を適切なPHPタイプに返します。

構文

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

パラメータ

  • json_string -UTF-8でエンコードされたデータでなければならないエンコードされた文字列です。
  • assoc -ブール型のパラメータであり、TRUEに設定すると、返されたオブジェクトは連想配列に変換されます。
  • depth -再帰の深さを指定する整数型パラメーターです
  • オプション-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)
}

Perlを使用したJSON

この章では、Perlプログラミング言語を使用してJSONオブジェクトをエンコードおよびデコードする方法について説明します。 Perl for JSONを使用したプログラミングを開始するための環境の準備から始めましょう。

環境

Perlを使用してJSONのエンコードとデコードを開始する前に、CPANから取得できるJSONモジュールをインストールする必要があります。 JSON-2.53.tar.gzまたはその他の最新バージョンをダウンロードしたら、以下の手順に従ってください-

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

JSON関数

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.

PerlでのJSONのエンコード(encode_json)

Perl encode_json()関数は、指定されたPerlデータ構造をUTF-8エンコードされたバイナリ文字列に変換します。

構文

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

次の例は、Perlを使用したJSONでの配列を示しています-

#!/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"}

PerlでのJSONのデコード(decode_json)

Perl decode_json()関数は、PerlでJSONをデコードするために使用されます。 この関数は、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
};

Pythonを使用したJSON

この章では、Pythonプログラミング言語を使用してJSONオブジェクトをエンコードおよびデコードする方法について説明します。 Python for JSONを使用したプログラミングを開始するための環境の準備から始めましょう。

環境

Pythonを使用してJSONのエンコードとデコードを開始する前に、使用可能なJSONモジュールをインストールする必要があります。 このチュートリアルでは、次のようにhttp://deron.meranda.us/python/demjson/[Demjson]をダウンロードしてインストールしました-

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

JSON関数

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

PythonでのJSONのエンコード(エンコード)

Pythonのencode()関数は、PythonオブジェクトをJSON文字列表現にエンコードします。

構文

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

次の例は、Pythonを使用したJSONでの配列を示しています。

#!/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}]

PythonでのJSONのデコード(デコード)

Pythonは、JSONのデコードにdemjson.decode()関数を使用できます。 この関数は、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}

Rubyを使用したJSON

この章では、Rubyプログラミング言語を使用してJSONオブジェクトをエンコードおよびデコードする方法について説明します。 Ruby for JSONでプログラミングを開始するための環境の準備から始めましょう。

環境

Rubyを使用してJSONのエンコードとデコードを開始する前に、Rubyで利用可能なJSONモジュールのいずれかをインストールする必要があります。 Ruby gemをインストールする必要があるかもしれませんが、Rubyの最新バージョンを実行している場合は、gemが既にマシンにインストールされている必要があります。

$gem install json

Rubyを使用したJSONの解析

次の例は、最初の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"
   ]

}

上記のJSONドキュメントを解析するために使用されるRubyプログラムを以下に示します-

#!/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"]
}

Javaを使用したJSON

この章では、Javaプログラミング言語を使用してJSONオブジェクトをエンコードおよびデコードする方法について説明します。 JSON for Javaでプログラミングを開始するための環境の準備から始めましょう。

環境

Javaを使用してJSONのエンコードとデコードを開始する前に、使用可能なJSONモジュールをインストールする必要があります。 このチュートリアルでは、https://code.google.com/p/json-simple/[JSON.simple]をダウンロードしてインストールし、 json-simple-1.1.1.jar ファイルの場所を環境に追加しました変数CLASSPATH。

JSONとJavaエンティティ間のマッピング

JSON.simpleは、デコードまたは解析中にエンティティを左側から右側にマップし、エンコード中にエンティティを右側から左側にマップします。

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

デコード時、_java.util.List_のデフォルトの具象クラスは_org.json.simple.JSONArray_であり、_java.util.Map_のデフォルトの具象クラスは_org.json.simple.JSONObject_です。

JavaでのJSONのエンコード

以下は、java.util.HashMapのサブクラスであるJava JSONObjectを使用してJSONオブジェクトをエンコードする簡単な例です。 順序付けは提供されません。 要素の厳密な順序付けが必要な場合は、java.util.LinkedHashMapなどの順序付けられたマップ実装でJSONValue.toJSONString(map)メソッドを使用します。

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

以下は、Java JSONObjectを使用したJSONオブジェクトストリーミングを示す別の例です-

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

JavaでJSONをデコードする

次の例では、 JSONObject および JSONArray を使用します。ここで、JSONObjectはjava.util.Mapであり、JSONArrayはjava.util.Listであるため、Mapまたは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を使用したJSON

AJAXは非同期JavaScriptおよびXMLであり、非同期Webアプリケーションを作成するために、相互に関連するWeb開発手法のグループとしてクライアント側で使用されます。 AJAXモデルによれば、Webアプリケーションは、既存のページの表示や動作を妨げることなく、非同期的にサーバーとの間でデータを送受信できます。

多くの開発者はJSONを使用して、クライアントとサーバー間でAJAX更新を渡します。 ライブスポーツスコアを更新するWebサイトは、AJAXの例と考えることができます。 これらのスコアをWebサイトで更新する必要がある場合、Webページが必要に応じてスコアを取得できるように、サーバーに保存する必要があります。 ここで、JSON形式のデータを利用できます。

AJAXを使用して更新されたデータは、WebサーバーでJSON形式を使用して保存できます。 AJAXは、javascriptが必要に応じてこれらのJSONファイルを取得し、それらを解析し、次の操作のいずれかを実行できるように使用されます-

  • 解析された値を変数に保存して、ウェブページに表示する前にさらに処理できるようにします。 *データがWebページのDOM要素に直接割り当てられるため、Webサイトに表示されます。

次のコードは、AJAXを使用したJSONを示しています。* ajax *ファイルとして保存します。 ここでは、ロード関数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.finddevguides.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>finddevguides.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 で、 Update Detail ボタンをクリックすると非同期にアップロードされるJSON形式のデータを持っています。 このファイルは* http://www.finddevguides.com/json/*に保存されています

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

上記のHTMLコードは、次の画面を生成します。ここで、AJAXの動作を確認できます-

クリケッターの詳細

Name Country
さちん インド

更新の詳細

[*詳細の更新]ボタンをクリックすると、次のような結果が得られます。 ブラウザがJavaScriptをサポートしていれば、link:/json/ajax [JSON with AJAX]を自分で試すことができます。

クリケッターの詳細

Name Country
ブレット オーストラリア