広告
広告
https://www.7key.jp/rfc/rfc4627.html#source
https://www.7key.jp/rfc/rfc4627.html#translation
This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited.
当メモはインターネットコミュニティに役立つであろう情報を提供するものであり、これによって標準的なインターネット像をでっちあげようとするものではない。また、当メモは配布に関しての制限を設けていない。
Copyright (C) The Internet Society (2006).
JavaScript Object Notation (JSON) is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript Programming Language Standard. JSON defines a small set of formatting rules for the portable representation of structured data.
JSONは、軽く、テキスト形式で、独立した言語のデータ交換用フォーマットであり、ECMAに拠るものである。JSONは、構造化されたデータを交換するための表現を規定する軽量なフォーマットである。
JavaScript Object Notation (JSON) is a text format for the serialization of structured data. It is derived from the object literals of JavaScript, as defined in the ECMAScript Programming Language Standard, Third Edition [ECMA].
JSONは階層データ交換用のテキスト形式であり、オブジェクトリテラルはStandard ECMA-262で定義されるJavaScriptに拠る。
JSON can represent four primitive types (strings, numbers, booleans, and null) and two structured types (objects and arrays).
JSONは四つのプリミティブ型(文字列型、数値型、Yes/No型、Null型)と二つの構造化型(オブジェクトと配列)を表すことができる。
A string is a sequence of zero or more Unicode characters [UNICODE].
一文字は0
以上のユニコード文字値である。
An object is an unordered collection of zero or more name/value pairs, where a name is a string and a value is a string, number, boolean, null, object, or array.
オブジェクトは、文字列からなる名前と、四つのプリミティブ型と二つの構造化型全てをとれる値のペアからなる0
個以上の順不同なコレクションである。
An array is an ordered sequence of zero or more values.
配列は、0
以上の値をもつ順不同の要素列からなる。
The terms "object" and "array" come from the conventions of JavaScript.
オブジェクトと配列という用語はJavaScriptの決りに則る。
JSON's design goals were for it to be minimal, portable, textual, and a subset of JavaScript.
JSONは、それが最小限であり、且つ移植性があり、且つテキスト形式であり、且つJavaScriptの部分集合であるよう設計されている。
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
当文書内で登場するMUST、MUST NOT、REQUIRED、SHALL、SHALL NOT、SHOULD、SHOULD NOT、RECOMMENDED、MAY、OPTIONALの意味は[RFC2119]の通りである。
The grammatical rules in this document are to be interpreted as described in [RFC4234].
当文書の文法規定は[RFC4234]の通りである。
A JSON text is a sequence of tokens. The set of tokens includes six structural characters, strings, numbers, and three literal names.
JSON文字列は連続したトークンからなり、トークンは六つの構造化型文字列、文字列、数値、三つのリテラル名を含む一揃いの組である。
A JSON text is a serialized object or array. JSON-text = object / array
JSON文字列は連続したオブジェクトまたは配列である。
These are the six structural characters: begin-array = ws %x5B ws ; [ left square bracket begin-object = ws %x7B ws ; { left curly bracket end-array = ws %x5D ws ; ] right square bracket end-object = ws %x7D ws ; } right curly bracket name-separator = ws %x3A ws ; : colon value-separator = ws %x2C ws ; , comma
六つの構造化型文字列は以下の通り。
Insignificant whitespace is allowed before or after any of the six structural characters. ws = *( %x20 / ; Space %x09 / ; Horizontal tab %x0A / ; Line feed or New line %x0D ; Carriage return )
以下の文字が前述の六つの構造化型文字列の前後にあっても何ら差し支えない。
A JSON value MUST be an object, array, number, or string, or one of the following three literal names: false null true
JSONの値は次のいずれかでなければならない(MUST)。オブジェクト、配列、数値、文字列、またはfalse、null、trueのいずれかの定義済み文字列。
The literal names MUST be lowercase. No other literal names are allowed. value = false / null / true / object / array / number / string false = %x66.61.6c.73.65 ; false null = %x6e.75.6c.6c ; null true = %x74.72.75.65 ; true
定義済み文字列は小文字でなければならず(MUST)、false、null、true以外の定義済み文字列は利用できない。
An object structure is represented as a pair of curly brackets surrounding zero or more name/value pairs (or members). A name is a string. A single colon comes after each name, separating the name from the value. A single comma separates a value from a following name. The names within an object SHOULD be unique. object = begin-object [ member *( value-separator member ) ] end-object member = string name-separator value
オブジェクトの構造は、0個以上の名前と値のペアまたはメンバを中括弧で括ることで表される。名前は文字列で、その後にシングルコロンを記述することによって対になる値と名前が区切られる。また、シングルカンマを記述することによって次の要素の名前と値が区切られることとなる。オブジェクト内の名前は一意であるべきだ(SHOULD)。
An array structure is represented as square brackets surrounding zero or more values (or elements). Elements are separated by commas. array = begin-array [ value *( value-separator value ) ] end-array
配列の構造は、0以上の値か要素を各括弧で括ることで表される。各要素はカンマで区切る。
The representation of numbers is similar to that used in most programming languages. A number contains an integer component that may be prefixed with an optional minus sign, which may be followed by a fraction part and/or an exponent part.
数値型は、殆どのプログラミング言語で使われている数値型と同様に表される。数値にはマイナス記号が付けられるかもしれないし、小数部分が整数の後に続くかもしれないし、指数部分が整数の後に続くかもしれない。
Octal and hex forms are not allowed. Leading zeros are not allowed.
8進数表記と16進数表記は許されておらず、また0から始まる数値も許されていない。
A fraction part is a decimal point followed by one or more digits.
小数部分は、小数点の後に1つ以上の数値が続く。
An exponent part begins with the letter E in upper or lowercase, which may be followed by a plus or minus sign. The E and optional sign are followed by one or more digits.
指数部は、文字"E"――大文字又は小文字――の後に続く。その"E"の後にはプラス記号かマイナス記号が続く場合もある。つまり、桁を表す数値が"E"の後に続くこととなり、その桁はマイナス値も取り得る。
Numeric values that cannot be represented as sequences of digits (such as Infinity and NaN) are not permitted. number = [ minus ] int [ frac ] [ exp ] decimal-point = %x2E ; . digit1-9 = %x31-39 ; 1-9 e = %x65 / %x45 ; e E exp = e [ minus / plus ] 1*DIGIT frac = decimal-point 1*DIGIT int = zero / ( digit1-9 *DIGIT ) minus = %x2D ; - plus = %x2B ; + zero = %x30 ; 0
InfinityやNaNなど数字として表されない値を数値とすることはできない。
The representation of strings is similar to conventions used in the C family of programming languages. A string begins and ends with quotation marks. All Unicode characters may be placed within the quotation marks except for the characters that must be escaped: quotation mark, reverse solidus, and the control characters (U+0000 through U+001F).
文字列型の表現は、プログラミング言語であるCファミリで用いられる規約と同様である。文字列の最初と最後にダブルクオーテーションマークを記述し、つまり全てのユニコード文字をダブルクオーテーションで括ることとなる。ダブルクオーテーションやバックスラッシュ、その他の制御文字――U+0000〜U+001F――といった特殊な文字を文字列とする場合はエスケープ文字を用いなければならない。
Any character may be escaped. If the character is in the Basic Multilingual Plane (U+0000 through U+FFFF), then it may be represented as a six-character sequence: a reverse solidus, followed by the lowercase letter u, followed by four hexadecimal digits that encode the character's code point. The hexadecimal letters A though F can be upper or lowercase. So, for example, a string containing only a single reverse solidus character may be represented as "\u005C".
どんな文字でもエスケープすることは可能であるが、その文字がBMP――U+0000〜U+FFFF――であれば、バックスラッシュの後に小文字の"u"、更にその後に対象の文字の文字コードをエンコードした四文字の16進数を使って表すことができる。16進数で使われる"A"から"F"の文字は大文字でも小文字でもよい。従って、例えばただのバックスラッシュからなる文字列を表したければ、"\u005C"
とすればよい。
Alternatively, there are two-character sequence escape representations of some popular characters. So, for example, a string containing only a single reverse solidus character may be represented more compactly as "\\".
更にもう一つエスケープシーケンスを表す一般的な方法がある。例えば前述と同じくただのバックスラッシュからなる文字列を表したい場合、単純に"\\"
とすればよい。
To escape an extended character that is not in the Basic Multilingual Plane, the character is represented as a twelve-character sequence, encoding the UTF-16 surrogate pair. So, for example, a string containing only the G clef character (U+1D11E) may be represented as "\uD834\uDD1E". string = quotation-mark *char quotation-mark char = unescaped / escape ( %x22 / ; " quotation mark U+0022 %x5C / ; \ reverse solidus U+005C %x2F / ; / solidus U+002F %x62 / ; b backspace U+0008 %x66 / ; f form feed U+000C %x6E / ; n line feed U+000A %x72 / ; r carriage return U+000D %x74 / ; t tab U+0009 %x75 4HEXDIG ) ; uXXXX U+XXXX escape = %x5C ; \ quotation-mark = %x22 ; " unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
BMPに含まれない拡張文字をエスケープするために、UTF-16(surrogate pair)でエンコードした12文字のシーケンスとして表すことができる。例えばト音記号(U+1D11E)のみを含む文字列は\uD834\uDD1E
とすればよい。
JSON text SHALL be encoded in Unicode. The default encoding is UTF-8.
JSONで使われる文字はUnicodeでエンコードすべきであり(SHALL)、デフォルトエンコードはUTF-8である。
Since the first two characters of a JSON text will always be ASCII characters [RFC0020], it is possible to determine whether an octet stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking at the pattern of nulls in the first four octets. 00 00 00 xx UTF-32BE 00 xx 00 xx UTF-16BE xx 00 00 00 UTF-32LE xx 00 xx 00 UTF-16LE xx xx xx xx UTF-8
JSON内の最初の二文字は常に[RFC0020]で示されるASCII文字となるので、最初の4オクテットのnullの規則を調べることでUTF-8なのかUTF-16(BE、LE)、UTF-32(BE、LE)なのかを判断することができる。
A JSON parser transforms a JSON text into another representation. A JSON parser MUST accept all texts that conform to the JSON grammar. A JSON parser MAY accept non-JSON forms or extensions.
JSONパーサはJSON文字を別の表現に変換をする。JSONパーサはJSONの文法に則ったコードを全て解釈できなければならない(MUST)。逆にJSONパーサがJSON文法に則らないコードや拡張コードを解釈することは特に問題ではない(MAY)。
An implementation may set limits on the size of texts that it accepts. An implementation may set limits on the maximum depth of nesting. An implementation may set limits on the range of numbers. An implementation may set limits on the length and character contents of strings.
JSONパーサの実装では、解釈可能なテキストサイズに制限があるかもしれない。よってネストの深さや数値の桁、文字列の長さには上限を設定した方が良いだろう。
A JSON generator produces JSON text. The resulting text MUST strictly conform to the JSON grammar.
JSONジェネレータはJSON文字を生成するアプリケーションプログラムであり、生成される文字はJSON文法に厳密に則ったものでなければならない(MUST)。
The MIME media type for JSON text is application/json.
JSONのMIMEタイプはapplication/json
である。
Type name: application Subtype name: json Required parameters: n/a Optional parameters: n/a
Encoding considerations: 8bit if UTF-8; binary if UTF-16 or UTF-32 JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON is written in UTF-8, JSON is 8bit compatible. When JSON is written in UTF-16 or UTF-32, the binary content-transfer-encoding must be used.
JSONはUTF-8、UTF-16、UTF-32のいずれかで表される。UTF-8でエンコードされている場合は8bit互換であり、UTF-16かUTF-32でエンコードされている場合はバイナリエンコードが使われている。
Security considerations: Generally there are security issues with scripting languages. JSON is a subset of JavaScript, but it is a safe subset that excludes assignment and invocation.
一般的にスクリプト言語にはセキュリティ上の問題が生じ易い。ただし、JSONはJavaScriptのサブセットとの位置付けだが、JavaScriptから代入と呼び出しが取り除かれた安全なサブセットである。
A JSON text can be safely passed into JavaScript's eval() function (which compiles and executes a string) if all the characters not enclosed in strings are in the set of characters that form JSON tokens. This can be quickly determined in JavaScript with two regular expressions and calls to the test and replace methods. var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test( text.replace(/"(\\.|[^"\\])*"/g, ''))) && eval('(' + text + ')');
全ての文字列がJSONトークン形式に則ったものでなかったとしても、JSONはJavaScriptのeval()
関数――当関数は文字列をコンパイルして実行する――を使うことによって安全な物となる。このことにより、より快適に二つの正規表現とtest
とreplace
の呼び出しを行うことができる。
Interoperability considerations: n/a
Published specification: RFC 4627
Applications that use this media type: JSON has been used to exchange data between applications written in all of these programming languages: ActionScript, C, C#, ColdFusion, Common Lisp, E, Erlang, Java, JavaScript, Lua, Objective CAML, Perl, PHP, Python, Rebol, Ruby, and Scheme.
JSONは次のプログラミング言語で書かれたアプリケーションとの間でデータのやり取りが可能である。
Additional information: Magic number(s): n/a File extension(s): .json Macintosh file type code(s): TEXT
Person & email address to contact for further information: Douglas Crockford douglas@crockford.com Intended usage: COMMON Restrictions on usage: none Author: Douglas Crockford douglas@crockford.com Change controller: Douglas Crockford douglas@crockford.com
See Security Considerations in Section 6.
セキュリティへの配慮はセクション6を参照のこと。
This is a JSON object: { "Image": { "Width": 800, "Height": 600, "Title": "View from 15th Floor", "Thumbnail": { "Url": "http://www.example.com/image/481989943", "Height": 125, "Width": "100" }, "IDs": [116, 943, 234, 38793] } }
Its Image member is an object whose Thumbnail member is an object and whose IDs member is an array of numbers.
This is a JSON array containing two objects:
[ { "precision": "zip", "Latitude": 37.7668, "Longitude": -122.3959, "Address": "", "City": "SAN FRANCISCO", "State": "CA", "Zip": "94107", "Country": "US" }, { "precision": "zip", "Latitude": 37.371991, "Longitude": -122.026020, "Address": "", "City": "SUNNYVALE", "State": "CA", "Zip": "94085", "Country": "US" } ]
[ECMA] European Computer Manufacturers Association, "ECMAScript Language Specification 3rd Edition", December 1999, <http://www.ecma-international.org/publications/files/ ecma-st/ECMA-262.pdf>. [RFC0020] Cerf, V., "ASCII format for network interchange", RFC 20, October 1969. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [RFC4234] Crocker, D. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 4234, October 2005. [UNICODE] The Unicode Consortium, "The Unicode Standard Version 4.0", 2003, <http://www.unicode.org/versions/Unicode4.1.0/>.
Author's Address Douglas Crockford JSON.org EMail: douglas@crockford.com
Copyright (C) The Internet Society (2006).
This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.
当文書はBCP78で触れられている権利と許可と制限の適用を受け、文書中で明らかにされている個所を除いて著者が全ての権利を維持する。
This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
当文書及び文書内の情報は無保証で提供され、寄稿者、寄稿者が代表となる組織、もしあれば寄稿者を後援する組織、インターネット学会及びIETFは、当文書がいかなる権利も侵害していないという保証、商業利用や特定目的に対する適合性への保証、更にはこれらに限らずあらゆる保証について明示的にも暗黙的にも保証をしていない。
The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.
IETFは当文書で提供する技術の実装や他の技術の使用に対して主張される知的所有権、その他の権利や効力または適用範囲、更にそれらの権利に基づく全てのライセンスが利用可能であるか否かについては一切関与をしない。これらに関して全ての権利が明確となるよう調査が行われているわけではない。文書の権利に関るIETFの手続きについてはBCP78とBCP79で閲覧可能である。
Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.
IETFによるIPR開示情報のコピーや利用可能なライセンスの保証、本仕様の実装者やユーザがそれらの一般ライセンスや使用許諾を得るための手順は、IETFのオンラインIPRレポジトリから入手可能である。
The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.
IETFは本標準を実装するために必要な技術に関する著作権、特許、特許出願、その他の知的所有権への指摘を歓迎する。その折は、ietf-ipr@ietf.org まで情報をお寄せ頂きたい。
Funding for the RFC Editor function is provided by the IETF Administrative Support Activity (IASA).
RFC編集者の職務に対する資金供給は、現在インターネット学会から提供されている。
広告