From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../reference/global_objects/json/index.html | 161 +++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 files/ja/web/javascript/reference/global_objects/json/index.html (limited to 'files/ja/web/javascript/reference/global_objects/json/index.html') diff --git a/files/ja/web/javascript/reference/global_objects/json/index.html b/files/ja/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..a6aced23b1 --- /dev/null +++ b/files/ja/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,161 @@ +--- +title: JSON +slug: Web/JavaScript/Reference/Global_Objects/JSON +tags: + - JSON + - JavaScript + - Namespace + - Object + - Reference + - 名前空間 +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +
{{JSRef}}
+ +

JSON オブジェクトは、 JavaScript Object Notation ({{glossary("JSON")}}) をパースするメソッドや、値を JSON に変換するメソッドを持ちます。これは呼び出しや構築をすることができず、また2つのメソッドプロパティを除いて、それ自身に興味深い機能性はありません。

+ +

JavaScript と JSON の違い

+ +

JSON は、オブジェクト、配列、数値、文字列、真偽値、そして {{jsxref("null")}} をシリアライズする構文です。これは JavaScript の構文に基づいていますが、区別されるものです。ある JavaScript が JSON であるわけではありません

+ +
+
Objects と Arrays
+
プロパティ名は二重引用符で括った文字列にしなければなりません。また、末尾にカンマを置いてはいけません。
+
Numbers
+
先頭にゼロを置くことは禁止されています。また、小数点は1桁以上の数字の後ろに置かなければなりません。 NaNInfinity には対応していません。
+
あらゆる JSON のテキストは有効な JavaScript の式です...
+
...ただし、 proposal to make all JSON text valid ECMA-262 を実装した JavaScript エンジンのみでの話です。この提案を実装していないエンジンでは、 U+2028 LINE SEPARATOR と U+2029 PARAGRAPH SEPARATOR は JSON の文字列リテラルとプロパティのキーでは許されますが、これらの機能を JavaScript 文字列リテラルの中で使用すると {{jsxref("SyntaxError")}} になります。
+
+ +

{{jsxref("JSON.parse()")}} が文字列を JSON として解釈し、 {{jsxref("eval")}} が文字列を JavaScript として実行するこの例を考えてみてください。

+ +
let code = '"\u2028\u2029"'
+JSON.parse(code)  // どのエンジンでも "\u2028\u2029" と評価される
+eval(code)        // 古いエンジンでは SyntaxError が発生する
+
+ +

他の違いとしては、二重引用符で囲まれた文字列のみを許可していることや、 {{jsxref("undefined")}} やコメントの規定がないことなどが挙げられます。 JSON に基づいたより人間に優しい設定フォーマットを使いたい場合、 Babel コンパイラーによって使われる JSON5 と、より一般的に使われる YAML があります。

+ +

JSON の完全な構文

+ +

JSON の完全な構文は以下のとおりです。

+ +
JSON = null
+    or true or false
+    or JSONNumber
+    or JSONString
+    or JSONObject
+    or JSONArray
+
+JSONNumber = - PositiveNumber
+          or PositiveNumber
+PositiveNumber = DecimalNumber
+              or DecimalNumber . Digits
+              or DecimalNumber . Digits ExponentPart
+              or DecimalNumber ExponentPart
+DecimalNumber = 0
+             or OneToNine Digits
+ExponentPart = e Exponent
+            or E Exponent
+Exponent = Digits
+        or + Digits
+        or - Digits
+Digits = Digit
+      or Digits Digit
+Digit = 0 through 9
+OneToNine = 1 through 9
+
+JSONString = ""
+          or " StringCharacters "
+StringCharacters = StringCharacter
+                or StringCharacters StringCharacter
+StringCharacter = any character
+                  except " or \ or U+0000 through U+001F
+               or EscapeSequence
+EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t
+              or \u HexDigit HexDigit HexDigit HexDigit
+HexDigit = 0 through 9
+        or A through F
+        or a through f
+
+JSONObject = { }
+          or { Members }
+Members = JSONString : JSON
+       or Members , JSONString : JSON
+
+JSONArray = [ ]
+         or [ ArrayElements ]
+ArrayElements = JSON
+             or ArrayElements , JSON
+
+ +

重要でない{{glossary("whitespace", "ホワイトスペース")}}は、基本的に任意の場所に置くことができますが、 JSONNumber (数値に空白を含んではいけません) や JSONString (一致する文字であると解釈されるか、エラーが発生します) の内部を除きます。ホワイトスペースとして有効な文字はタブ文字 (U+0009)、キャリッジリターン (U+000D)、ラインフィード (U+000A)、空白 (U+0020) のみです。

+ +

静的メソッド

+ +
+
{{jsxref("JSON.parse()", "JSON.parse(text[, reviver])")}}
+
文字列 text を JSON として解析し、オプションで生成された値とそのプロパティを変換し、値を返します。 JavaScript と JSON の違いに関連するものを含め、 JSON の構文に違反すると {{jsxref("SyntaxError")}} が発生します。 reviver オプションを使用すると、他のデータ型を表すために使われた replacer を解釈することができます。
+
{{jsxref("JSON.stringify()", "JSON.stringify(value[, replacer[, space]])")}}
+
指定した値に対応する JSON 文字列を返します。オプションで、特定のプロパティのみを含むか、ユーザー定義の方法でプロパティ値を置き換えることもできます。既定では、すべての {{jsxref("undefined")}} のインスタンスは {{jsxref("null")}} に置き換えられ、その他の対応していないネイティブデータ型は打ち切られます。 replacer オプションでは、他の動作を指定することができます。
+
+ +

+ +

JSONの例

+ +
{
+  "browsers": {
+    "firefox": {
+      "name": "Firefox",
+      "pref_url": "about:config",
+      "releases": {
+        "1": {
+          "release_date": "2004-11-09",
+          "status": "retired",
+          "engine": "Gecko",
+          "engine_version": "1.7"
+        }
+      }
+    }
+  }
+}
+
+ +

仕様書

+ + + + + + + + + + + + +
仕様書
{{SpecName('ESDraft', '#sec-json-object', 'JSON')}}
+ +

ブラウザーの互換性

+ +
+ + +

{{Compat("javascript.builtins.JSON")}}

+
+ +

関連情報

+ + + +

ツール

+ + -- cgit v1.2.3-54-g00ecf