--- title: JSON slug: Web/JavaScript/Reference/Global_Objects/JSON tags: - JSON - JavaScript - Namespace - Object - Reference - 名前空間 translation_of: Web/JavaScript/Reference/Global_Objects/JSON ---
JSON オブジェクトは、 JavaScript Object Notation ({{glossary("JSON")}}) をパースするメソッドや、値を JSON に変換するメソッドを持ちます。これは呼び出しや構築をすることができず、また2つのメソッドプロパティを除いて、それ自身に興味深い機能性はありません。
JSON は、オブジェクト、配列、数値、文字列、真偽値、そして {{jsxref("null")}} をシリアライズする構文です。これは JavaScript の構文に基づいていますが、区別されるものです。ある JavaScript が JSON であるわけではありません。
NaN と Infinity には対応していません。{{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 = 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) のみです。
text を JSON として解析し、オプションで生成された値とそのプロパティを変換し、値を返します。 JavaScript と JSON の違いに関連するものを含め、 JSON の構文に違反すると {{jsxref("SyntaxError")}} が発生します。 reviver オプションを使用すると、他のデータ型を表すために使われた replacer を解釈することができます。replacer オプションでは、他の動作を指定することができます。{
  "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")}}