1. ホーム
  2. json

[解決済み] JSONとは何か、何に使うのか?

2022-03-18 18:27:01

質問

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ではありません。

参照 Javascriptオブジェクト対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つのメソッド( parsestringify これは、最終結果の各レベルのキーと値に対して呼び出される関数で、各値は入力した関数の結果で置き換えられます。 (詳しくは、この こちら )

JSONはJavaScriptのためだけのものだと思っている人は、以下をチェックしてみてください。 この記事 には、そうでないことを説明し、確認することができます。


参考文献