「JavaScript Object Notation」の版間の差分
削除された内容 追加された内容
編集の要約なし |
Madogiwanohito (会話 | 投稿記録) 編集の要約なし |
||
1行目:
{{
| name = JSON
| icon = [[File:JSON vector logo.svg]]
14行目:
| title = Introducing JSON
| publisher = json.org
| accessdate = 2008-04-19
}}</ref> ([[ECMAScript]]) をベースとしている。[[2006年]][[7月]]に
IETF
* [[2006年]][[7月]] - RFC 4627
* [[2013年]][[3月]] - RFC 7158
* [[2013年]][[10月]] - [http://www.ecma-international.org/publications/standards/Ecma-404-arch.htm ECMA-404 1st edition]
* [[2014年]][[3月]] - RFC 7159
* [[2017年]][[12月14日]]<ref name="LastJSONSpec"/> - RFC 8259
JSONはJavaScriptにおけるオブジェクト表記法のサブセットであるが、JavaScriptでの利用に限られたものではない。
JSONは単純であるので、特に[[Ajax]]の分野で利用が広がりつつある。JavaScriptでJSONをパースして読み込むには、文字列をJavaScriptのコードとして解釈させる <code>[[eval]]</code> 関数を作用させるだけでよい(ただし、セキュリティ上の問題があるうえ、U+2028 LINE SEPARATOR と U+2029 PARAGRAPH SEPARATOR の扱いがJavaScriptと互換性が無いため、JSON専用のパース関数の <code>JSON.parse()</code> を利用するべきである)。このように、広く普及しているウェブブラウザ搭載言語であるJavaScriptで簡単に読み込めるため、Ajaxの開発者達から注目を浴びることになった。
JavaScript言語以外でも、ほとんどの言語においてJSONは単純な処理で書き出しや読み込みができる。また、実装されたプログラミング言語数は[[YAML]]より多いと言われる。そのため、JSONは異なる[[プログラミング言語]]の間でのデータの受渡しには能率的である。[[ウェブアプリケーション]]の場合において、ウェブ[[クライアント (コンピュータ)|クライアント]]でのJavaScriptとのデータの受渡しなどはその最たる活用例と言える。[[プロセス間通信]]、マシン間通信においても、[[結合度|疎結合]]にするため、JSONで情報を受け渡しすることもある。
=== JSONの発見 ===
{{仮リンク|ダグラス・クロックフォード
== 表記方法 ==
JSONで表現する[[データ型]]は以下の通りで、これらを組み合わせてデータを記述する。<code>true</code>, <code>false</code>, <code>null</code> などは全て小文字でなくてはならない。
* 数値([[整数]]、[[浮動小数点数]])
* 文字列(バックスラッシュによるエスケープシーケンス記法を含む、ダブルクォーテーションでくくった文字列)
* 真偽値(<code>true</code> と <code>false</code>)
* [[配列]](データのシーケンス)
* オブジェクト(順序づけされていないキーと値のペアの集まり。JSONでは[[連想配列]]と等価)
* <code>null</code>
数値は[[10進法]]表記に限り、8進、16進法表記などはできない。また[[浮動小数点数]]としては <code>1.0e-10</code> といった[[指数表記]]もできる。
文字列は(JSONそれ自体と同じく)[[Unicode]]文字列である。基本的にはJavaScriptの文字列リテラルと同様だが、囲むのにシングルクォートは使えない。バックスラッシュによるエスケープがある。
59行目:
=== エンコーディング ===
RFC 8259
過去の
== AjaxにおけるJSONの利用 ==
101行目:
</syntaxhighlight>
ここでいずれも、<code>http_request</code> は[[XMLHttpRequest]]オブジェクトであり、それを <code>url</code> にアクセスして返ってきたJSONで記述されたデータを <code>the_object</code> に格納される。いま、XMLHttpRequestを用いて実装をしたが、iframeなどの他の実装方法もある。また、[[JavaScript]][[ライブラリ]]の[[prototype.js]]では[[Hypertext Transfer Protocol|HTTP]]の <code>X-JSON</code> ヘッダを利用して簡単にJSONデータの受渡しができる。
== 他のデータ記述法との関係 ==
115行目:
}}</ref>。YAMLにはブロック形式とインライン形式(フロー形式)の表記法があるが、JSONは後者にさらに制約を加えたものと捉えることができる。例えば[[Ruby]]では以下のようにしてJSONをYAMLとして読み込むことができる:
:<syntaxhighlight lang="ruby">the_object = YAML.load('{"name": "John Smith", "age": 33}')</syntaxhighlight>
:
| url = http://www.yaml.org/spec/1.2/spec.html#id2763754
| title = 3.2.1. Representation Graph - YAML Ain’t Markup Language (YAML™) Version 1.2
| publisher = yaml.org
| accessdate = 2013-05-15
142行目:
* [http://www.json.org/ Introducing JSON] {{En icon}}
* [http://www.json.org/json-ja.html JSONの紹介] {{Ja icon}}
* IETF
** [https://tools.ietf.org/html/std90 IETF STD 90] および RFC 8259
** 古い廃止された仕様書
|