[解決済み] JSONとは何か、何に使うのか?
質問
Wikipediaで調べたり、ググったり、公式ドキュメントを読んだりしましたが、JSONとは何か、なぜそれを使うのか、まだよく理解できていません。
私は、しばらくの間、PHP、MySQL、JavaScript/HTMLを使ってアプリケーションを構築してきました。どなたか、簡潔な説明をお願いします。
どのように解決するのですか?
JSON(JavaScript Object Notation)は、データ交換に使用される軽量なフォーマットです。 JavaScript言語のサブセット(JavaScriptでオブジェクトを構築する方法)をベースにしています。として MDNに記載されている あるJavaScriptはJSONではなく、またあるJSONはJavaScriptではありません。
これが利用される例として、Webサービスのレスポンスがあります。 昔は、ウェブサービスはXMLを主なデータ形式としてデータを送信していましたが、JSONが出現してからは( JSON形式を指定するのは RFC 4627 Douglas Crockford著 の方がはるかに優れているため、この形式が好まれるようになりました。 ライトウェイト
公式サイトでは、より多くの情報が掲載されています。 JSONのWebサイト .
JSONは2つの構造で成り立っています。
- 名前と値のペアの集合体。様々な言語で、これはオブジェクト、レコード、構造体、辞書、ハッシュテーブル、キー付きリスト、または連想配列として実現されます。
- 値の順序付きリスト。ほとんどの言語で、これは配列、ベクトル、リスト、またはシーケンスとして実現されます。
JSONの構造
JSONデータの例です。
{
"firstName": "John",
"lastName": "Smith",
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
"212 555-1234",
"646 555-4567"
]
}
JavaScriptでJSON
JSONは(Javascriptでは)文字列です!
人々はしばしば、すべてのJavascriptオブジェクトはJSONであり、JSONはJavascriptオブジェクトであると思い込んでいます。これは間違っています。
ジャバスクリプトでは
var x = {x:y}
は
JSONではない
は、これは
Javascriptオブジェクト
. この2つは同じものではありません。JSONに相当するもの(Javascript言語で表現されたもの)は次のようになります。
var x = '{"x":"y"}'
.
x
は、型
文字列
それ自体はオブジェクトではありません。これを本格的なJavascriptオブジェクトにするためには、まずこれをパースする必要があります。
var x = JSON.parse('{"x":"y"}');
,
x
はオブジェクトになりましたが、これはもうJSONではありません。
JSONやJavaScriptを扱うとき、ついつい
eval
関数を使ってコールバックで返された結果を評価することはできますが、JSONでは有効でもJavaScriptでは無効な2つの文字(U+2028 & U+2029)があるため、これはお勧めできません(詳しくは、このページの
ここで
).
したがって、有効なJSONを評価する前にチェックするCrockfordのスクリプトを常に使用するようにしなければなりません。 スクリプトの説明へのリンクがあります こちら で、こちらは ダイレクトリンク をjsファイルへコピーします。最近の主要なブラウザには 独自の実装 を使用します。
JSONパーサーの使用例(上記のコードスニペットのjsonを使用)。
//The callback function that will be executed once data is received from the server
var callback = function (result) {
var johnny = JSON.parse(result);
//Now, the variable 'johnny' is an object that contains all of the properties
//from the above code snippet (the json example)
alert(johnny.firstName + ' ' + johnny.lastName); //Will alert 'John Smith'
};
JSONパーサーは、もう1つ非常に便利な方法も提供しています。
stringify
. このメソッドは、JavaScriptオブジェクトをパラメータとして受け取り、JSON形式の文字列を出力します。 これは、以下のような場合に便利です。
サーバーにデータを送り返す。
var anObject = {name: "Andreas", surname : "Grech", age : 20};
var jsonFormat = JSON.stringify(anObject);
//The above method will output this: {"name":"Andreas","surname":"Grech","age":20}
上記の2つのメソッド(
parse
と
stringify
これは、最終結果の各レベルのキーと値に対して呼び出される関数で、各値は入力した関数の結果で置き換えられます。 (詳しくは、この
こちら
)
JSONはJavaScriptのためだけのものだと思っている人は、以下をチェックしてみてください。 この記事 には、そうでないことを説明し、確認することができます。
参考文献
関連
-
[解決済み] Azure VMのエラーです。"あなたのアカウントは、このデバイスを使用できないように設定されています。詳細については、システム管理者にお問い合わせください" [終了しました]。
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] Microsoft JSONの日付はどのようにフォーマットするのですか?
-
[解決済み] 正しい」JSONの日付形式とは?
-
[解決済み] jsonパラメータを含むCurl GETリクエスト
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】tsconfig.json: Build:No inputs were found in config file.
-
[解決済み] json gem のインストール中にエラー 'mkmf.rb can't find header files for ruby' が発生する。
-
[解決済み] Golang で文字列を構造体のようにアンマーシャリングする
-
[解決済み] Chromeを使用してASP.NET Web APIがXMLの代わりにJSONを返すようにするにはどうすればよいですか?
-
[解決済み] JSONでnullを表現する
-
[解決済み] JSONオブジェクトをTypeScriptのクラスにキャストする方法を教えてください。
-
[解決済み】JavascriptのオブジェクトとJSONの比較
-
[解決済み】GoのJSONマーシャルでJSONのキー名を小文字にする
-
[解決済み] SwiftでJSON辞書の型を持つプロパティをデコードする方法 [45] デコード可能なプロトコル
-
[解決済み] ASP.NETでWebAPIやMVCを使ってJSONを返す。