🔫 JSON:XMLへの無脂肪の代替
JSONは、分散アプリケーションやサービスの作成を非常に容易にすることに気付いた人々に広く採用されています。JSONの公式インターネットメディアタイプはapplication/json
RFC 4627
です。JSONファイル名は拡張子を使用します.json
。
►JavaScript Object Notation(JSON
)は、言語に依存しない軽量のテキストベースのデータ交換フォーマットです。JSONは、プログラミング言語で記述されたアプリケーション間でデータを交換するために使用されています。
JSONオブジェクトは、解析と文字列化という2つの関数を含む単一のオブジェクトであり、JSONテキストの解析と構築に使用されます。
- JSON.stringifyは、次のJSON文法に準拠する文字列を生成します。
- JSON.parseは、JSON文法に準拠した文字列を受け入れます。
parseJSONメソッドはに含まれますFourth Edition of ECMAScript
。それまでの間、JavaScript実装はjson.orgで入手できます。
var objLiteral = {foo: 42}; // JavaScript Object
console.log('Object Literal : ', objLiteral ); // Object {foo: 42}foo: 42__proto__: Object
// This is a JSON String, like what you'd get back from an AJAX request.
var jsonString = '{"foo": 452}';
console.log('JOSN String : ', jsonString ); // {"foo": 452}
// This is how you deserialize that JSON String into an Object.
var serverResposnceObject = JSON.parse( jsonString );
console.log('Converting Ajax response to JavaScript Object : ', serverResposnceObject); // Object {foo: 42}foo: 42 __proto__: Object
// And this is how you serialize an Object into a JSON String.
var serverRequestJSON = JSON.stringify( objLiteral );
console.log('Reqesting server with JSON Data : ', serverRequestJSON); // '{"foo": 452}'
JSONはJavaScriptのサブセットです。Javascriptは、ECMAScriptプログラミング言語標準から派生しました。
►ECMAScript
ECMAScriptは、世界で最も広く使用されている汎用プログラミング言語の1つに成長しました。これは、Webブラウザーに組み込まれた言語として最もよく知られていますが、サーバーおよび組み込みアプリケーションにも広く採用されています。 ECMAScriptは、JavaScript
(Netscape Communications)とJScript
(Microsoft Corporation)で最もよく知られているいくつかの元々のテクノロジーに基づいています。1994年以前はECMAは「European Computer Manufacturers Association」として知られていましたが、1994年に組織がグローバルになった後、「商標」「Ecma」は歴史的な理由で保持されました。
ECMAScriptは言語ですが、JavaScript、JScript、さらにはActionScriptも呼び出され"Dialects"
ます。
方言は同じ言語から派生しています。それらは同じ言語から派生したため、互いに非常に似ていますが、いくつかの変更が加えられています。方言は、言語自体のバリエーションです。単一の言語から派生しています。
- SQL言語-Hibernate MySQL Dialect、Oracle Dialect、..いくつかの変更または追加された機能があります。
ユーザーのブラウザとコンピュータに関する情報。
navigator.appName // "Netscape"
ECMAScriptは、JavaScriptの基礎を形成するスクリプト言語です。。JavaScript
language resources
ECMA-262
Links
Initial Edition, June 1997
PDF.
2nd Edition, August 1998
PDF.
3rd Edition, December 1999
PDF.
5th Edition, December 2009
PDF.
5.1 Edition, June 2011
HTML.
6th Edition, June 2015
HTML.
7ᵗʰ Edition, June 2016
HTML.
8th edition, June 2017
HTML.
9th Edition, 2018
HTML.
注« 作業が不完全だったため、 ECMAScriptの第4版は公開されませんでした。
JSONは、構造化データの移植可能な表現のために、一連の小さなフォーマットルールを定義します。
►キー値は引用符で囲む必要があります。キーに使用できるのは文字列のみです。String以外を使用すると、Stringに変換されます。ただし、文字列以外のキーの使用はお勧めしません。このような例を確認してください- { 'key':'val' }
以上RFC 4627 - jsonformatter
var storage = {
0 : null,
1 : "Hello"
};
console.log( storage[1] ); // Hello
console.log( JSON.stringify( storage ) ); // {"0":null,"1":"Hello","2":"world!"}
var objLiteral = {'key1':'val1'};
var arr = [10, 20], arr2 = [ 'Yash', 'Sam' ];
var obj = { k: 'v' }, obj2 = { k2: 'v2' };
var fun = function keyFun() {} ;
objLiteral[ arr ] = 'ArrayVal'; objLiteral[ arr2 ] = 'OverridenArrayVal';
objLiteral[ obj ] = 'ObjectVal'; objLiteral[ obj2 ] = 'OverridenObjectVal';
objLiteral[ fun ] = 'FunctionVal';
console.log( objLiteral );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log( JSON.stringify( objLiteral ) );
// {"key1":"val1","10,20":"ArrayVal","Yash,Sam":"OverridenArrayVal","[object Object]":"OverridenObjectVal","function keyFun() {}":"FunctionVal"}
console.log( JSON.parse( JSON.stringify( objLiteral ) ) );
// Object {key1: "val1", 10,20: "ArrayVal", Yash,Sam: "OverridenArrayVal", [object Object]: "OverridenObjectVal", function keyFun() {}: "FunctionVal"}
console.log('Accessing Array Val : ', objLiteral[ [10,20] ] );
console.log('Accessing Object Val : ', objLiteral[ '[object Object]' ] );
console.log('Accessing Function Val : ', objLiteral[ 'function keyFun() {}' ] );
►JSON文字列は、「ではなく」で引用符で囲む必要があります。文字列は、CまたはJavaの文字列とよく似ています。文字列は二重引用符で囲む必要があります。
- リテラルは変数ではなく固定値であり、文字通りスクリプトで指定します。
- 文字列は、バックスラッシュエスケープメントで引用符で囲まれた0個以上の文字のシーケンスであり、ほとんどのプログラミング言語で使用されている表記と同じです。
- 🔫-文字列では特殊記号を使用できますが、使用はお勧めしません。
- \ "-特殊文字はエスケープできます。ただし、エスケープ( ')を使用しないことをお勧めします。一重引用符。厳密モードでは、スローされてエラーになります-
SyntaxError: Unexpected token ' in JSON
{ "Hai\" \n Team 🔫":5, "Bye \'": 7 }
オンラインのJSON Edtions でこのコードを確認してください。Modes
notStrict
,
Strinct
.
var jsonString = "{'foo': 452}"; // {'foo': 452}
var jsonStr = '{"foo": 452}'; // {"foo": 452}
JSON.parse( jsonString ); // Unexpected token ' in JSON at position 1(…)
JSON.parse( jsonStr ); // Object {foo: 452}
objLiteral['key'] = 'val'; // Object {foo: 42, key: "val"}
objLiteral.key2 = 'val';
// objLiteral.key\n3 - SyntaxError: Invalid or unexpected token
objLiteral['key\n3'] = 'val'; // Object {"foo": "42", key: "val", key2: "val", "key↵3": "val"}
JSON.stringify( objLiteral ); // {"foo":"42","key":"val","key2":"val","key\n3":"val"}
オブジェクトプロパティアクセサー は、ドット表記またはブラケット表記を使用して、オブジェクトのプロパティへのアクセスを提供します。
►値の範囲が制限されている(機能が許可されていないなど)。値は、二重引用符で囲まれた文字列、数値、ブール値、null、オブジェクト、または配列にすることができます。これらの構造はネストすることができます。
var objLiteral = {};
objLiteral.funKey = function sayHello() {
console.log('Object Key with function as value - Its outcome message.');
};
objLiteral['Key'] = 'Val';
console.log('Object Literal Fun : ', objLiteral );
// Object Literal Fun : Object {Key: "Val"}Key: "Val"funKey: sayHello()__proto__: Object
console.log( JSON.stringify( objLiteral ) ); // {"Key":"Val"}
► JavaScript
はECMAScript標準の最も一般的な実装です。Javascriptのコア機能はECMAScript標準に基づいていますが、JavascriptにはECMA仕様/標準にはないその他の追加機能もあります。すべてのブラウザーにはJavaScriptインタープリターがあります。
JavaScriptは動的に型付けされる言語です。つまり、変数を宣言するときにデータ型を指定する必要がなく、データ型はスクリプトの実行中に必要に応じて自動的に変換されます。
Literals
:
'37' - 7 // 30
'37' + 7 // "377"
+'37' + 7 // 44
+'37' // 37
'37' // "37"
parseInt('37'); // 37
parseInt('3.7'); // 3
parseFloat(3.7); // 3.7
// An alternative method of retrieving a number from a string is with the + (unary plus) operator:
+'3.7' // 3.7
Object literals
RFC 7159
オブジェクト構造は、0個以上の名前と値のペア(またはメンバー)を囲む中括弧のペアとして表されます。名前は文字列です。各名前の後にコロンを1つ付けて、名前と値を区切ります。1つのカンマで値と後続の名前を区切ります。オブジェクト内の名前は一意である必要があります。
ECMAScriptは、プロトタイプベースの継承をサポートしています。すべてのコンストラクタには関連付けられたプロトタイプがあり、そのコンストラクタによって作成されたすべてのオブジェクトには、そのコンストラクタに関連付けられたプロトタイプ(オブジェクトのプロトタイプと呼ばれる)への暗黙的な参照があります。さらに、プロトタイプには、そのプロトタイプへのnull以外の暗黙的な参照が含まれる場合があります。これはプロトタイプチェーンと呼ばれます。
クラスベースのオブジェクト指向言語では、一般に、状態はインスタンスによって運ばれ、メソッドはクラスによって運ばれ、継承は構造と動作だけのものです。ECMAScriptでは、状態とメソッドはオブジェクトによって伝達され、構造、動作、および状態はすべて継承されます。
プロトタイプは、ECMAScriptで構造、状態、および動作の継承を実装するために使用されるオブジェクトです。コンストラクターがオブジェクトを作成すると、そのオブジェクトは、プロパティ参照を解決する目的で、コンストラクターに関連付けられたプロトタイプを暗黙的に参照します。コンストラクターに関連付けられたプロトタイプは、プログラム式コンストラクター.prototypeによって参照でき、オブジェクトのプロトタイプに追加されたプロパティは、継承を通じて、プロトタイプを共有するすべてのオブジェクトによって共有されます。