Json の長所と短所、使用方法の紹介

Json の長所と短所、使用方法の紹介

1. JSONとは何か

JSON の概念は非常にシンプルです。JSON は、JavaScript 構文のサブセット、つまり配列とオブジェクトの表現に基づいた軽量のデータ形式です。 JavaScript 構文が使用されるため、JSON 定義を JavaScript ファイルに含めて、XML ベースの言語による追加の解析なしでアクセスできます。ただし、JSON を使用する前に、JavaScript の配列とオブジェクトリテラルの特殊な構文を理解することが重要です。

1.1 配列リテラル

配列リテラルは、角括弧で囲まれたコンマ区切りの JavaScript 値のセットです。例:

var aNames=["hello", 12, true , null];

1.2 オブジェクトリテラル

オブジェクトリテラルは、2 つの中括弧で囲むことによって定義されます。中括弧内に任意の数の名前と値のペアを配置して、書式文字列の値を定義することができます。最後の行を除き、各名前と値のペアの後にはコンマを続ける必要があります (これは、Perl の連想配列の定義に似ています)。例:

        var oCar = {

               "色": "赤",       

              「ドア」: 4,

               「有料」: true

        };

1.3 混合リテラル

オブジェクトと配列リテラルを混在させて、オブジェクトの配列、または配列を含むオブジェクトを作成できます。例えば:

{コメント:[
{
id:1,
著者:"someone1",
URL:"http://someone1.x2design.net",
内容:「こんにちは」
},
{
id:2,
著者:"someone2",
URL:"http://someone2.x2design.net",
内容:「こんにちは」
},
{
id:3,
著者:"someone3",
URL:"http://someone3.x2design.net",
内容:「こんにちは」
}
]};

1.4 JSON構文

Ajax アプリケーションでは、サーバーが JavaScript ステートメントを直接生成し、クライアントが eval メソッドを直接使用してオブジェクトを取得するため、XML の解析によるパフォーマンスの低下が排除されます。 同時に、JavaScript 通信でデータ形式として JSON を使用する利点は、データの値をすぐに取得できるため、そこに含まれるデータに高速にアクセスできることです。

var oCarInfo = eval("(" + sJSON + ")");

覚えておいてください: 中括弧も JavaScript のステートメントです。パーサーが中括弧がステートメントではなくオブジェクトを表していることを認識する唯一の方法は、中括弧を囲む括弧 (コードがステートメントではなく式であることを示すために使用されます) を見つけることです。

1.5 JSONエンコードとデコード

Corockford は、JSON リソースの一部として、JSON および Javascript オブジェクトを直接デコードおよびエンコードできるツールを開発しました。このツールのソースコードは、https://github.com/douglascrockford/JSON-js からダウンロードできます。

上で述べたように、 eval() の使用には固有の欠陥がいくつかあります。これは、JSON だけでなく、渡されたすべての JavaScript コードを評価するように設計されています。したがって、エンタープライズレベルの Web アプリケーション開発においては、セキュリティ上の大きなリスクが生じます。この問題を解決するには、JSON コードを Javascript に変換するだけのパーサーである JSON.parse() メソッドを使用できます。例えば:

var oObject = JSON.parse(sJSON);

また、Javascript オブジェクトを JSON 文字列 (データ転送に使用) に変換するためのツールも提供します (Javascript にはこれに対する組み込みサポートはありません)。オブジェクトを JSON.Stringify() メソッドに渡すだけです。次の例を見てください。

       var oCar = 新しいオブジェクト();

       oCar.ドア = 4;

        oCar.color = "青";

       oCar.year = 1995;

       oCar.drivers = 新しい配列("Penny", "Dan", "Kris");

       document.write(JSON.stringify(oCar));

このコードは次のような JSON 文字列を出力します。

{"ドア" : 4、"色" : "青"、"年" :1995、"運転手" : ["ペニー"、"ダン"、"クリス"]}

2. JSON と XML

上で述べたように、JSON が XML よりも優れている大きな利点の 1 つは、JSON の方がはるかにシンプルであることです。

XML データ表現の例を参照してください。

XML 表現の使用:

<コメント>
<コメント>
<id>1</id>
<author>誰か1</author>
<url>http://someone1.x2design.net</url>
<content>こんにちは</content>
</コメント>
<コメント>
<id>2</id>
<author>誰か2</author>
<url>http://someone2.x2design.net</url>
<content>誰か1</content>
</コメント>
<コメント>
<id>3</id>
<author>誰か3</author>
<url>http://someone3.x2design.net</url>
<content>こんにちは</content>
</コメント>
</コメント>

JSON 表現の使用:

{コメント:[
{
id:1,
著者:"someone1",
URL:"http://someone1.x2design.net",
内容:「こんにちは」
},
{
id:2,
著者:"someone2",
URL:"http://someone2.x2design.net",
内容:「こんにちは」
},
{
id:3,
著者:"someone3",
URL:"http://someone3.x2design.net",
内容:「こんにちは」
}
]};

多くの冗長な情報が欠落していることに気づくのは簡単です。終了タグを開始タグと一致させる必要がないため、同じ情報を送信するために必要なバイト数が大幅に削減されます。創設者のコーロックフォード氏はこれを「XML のダイエット プラン」と呼んでいます。

XML と比較した JSON 形式のデータの欠点は、素人にとって読みにくいことです。もちろん、データ交換形式は肉眼で見ることを意図したものではないという見方もあります。データがツールによって作成され、解析される場合、そのデータが人間が読めるものである必要はまったくありません。要するに、JSON ツールが利用可能だということです。

3. サーバーサイドJSONツール

java: Douglas Crock ford によって開発された java JSON ツールは、https://github.com/stleary/JSON-java からダウンロードでき、JSP で使用できます。

4. JSONの長所と短所

JSON は、XML 解析によって生じるパフォーマンスと互換性の問題を軽減するだけでなく、JavaScript でも非常に使いやすいです。配列をトラバースしてオブジェクトのプロパティにアクセスすることで、データを簡単に取得できます。また、読み取り可能で、基本的に構造化データの特性を備えています。これは非常に良い方法だと言わざるを得ません。実際、Google マップはデータの転送に XML ではなく JSON を使用しています。

JSON のもう 1 つの利点は、クロスドメイン実行可能性です。たとえば、www.xxx.com の Web ページで JSON を使用することは完全に可能であり、ドメイン間で情報を送信できます。ただし、XMLHttpRequest を使用すると、Javascript の内部セキュリティの性質によって制限されるクロスドメイン情報を取得できません。

JSON は見た目が美しいですが、XML を完全に置き換えることができますか?これは事実ではありません。その理由は、XML の強みである普遍性にあります。サーバーに文法的に正しい JavaScript コードを生成させることは簡単ではありません。これは主に、サーバー側とクライアント側に異なる開発者がいる大規模なシステムで発生します。オブジェクトの形式を調整する必要があり、簡単にエラーが発生する可能性があります。

JSON.parse(jsonstr); //json文字列をjsonオブジェクトに変換できます

JSON.stringify(jsonobj); //jsonオブジェクトをjson文字列に変換できます

このページを更新するには js を使用します: window.location.reload();

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jsonファイルの書き方の詳細説明
  • Jsonフォーマットの詳細な説明
  • 1 つの記事で JSON (JavaScript Object Notation) を理解する
  • JSON の概要と使用方法の概要
  • js の json オブジェクトの詳細な紹介
  • jQuery JSON 解析の例
  • JSONの原理分析と例の紹介
  • JSONデータ形式の概要
  • 簡潔なJSONの紹介
  • jsonの簡単な紹介

<<:  2015-2016年に主流となるインタラクティブ体験のトレンド

>>:  MySQLデータベースのパスワードを忘れた場合の解決策

推薦する

加算、減算、乗算、除算の機能を実現するには、HTML に 2 つの数値を入力します。

1. parseFloat() 関数Web ページ上に簡単な計算機を作成し、テキスト ボックスに ...

CSS変数を使用して、クールで素晴らしいフローティング効果を実現します。

最近、Grover の Web サイトで楽しいホバー アニメーションを見つけ、自分自身のインスピレー...

MySQL テーブル フィールドの時間設定のデフォルト値

アプリケーションシナリオデータ テーブルでは、アプリケーションは各データがいつ作成されたかを記録する...

vsFTP 3.0.3 のコンパイルとインストールの詳細な分析

脆弱性の詳細VSFTP は、GPL に基づいてリリースされた Unix ライクなシステムで使用される...

Vueはアンカー配置機能を実装します

この記事では、アンカー配置を実装するためのVueの具体的なコードを例として紹介します。具体的な内容は...

CSS3 で transform を使用した場合のフォントぼかしの解決方法の詳細な説明

この質問は非常に奇妙なので、あまり多くを語らずにコードに直接進みます。 .g-ダイアログラッパー{ ...

OpenShift のクイックインストールの詳細な手順

OpenShift 3.9 の最新バージョンを体験する最も早い方法。準備 [root@host ~]...

HTMLポップアップ透明レイヤーインスタンスのサイズを設定でき、比例することができます

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

JS 非同期スタック トレース: await が Promise よりも優れている理由

概要async/await と Promise の基本的な違いは、await fn() は現在の関数...

IDEA が MySQL データベースに接続できない問題の 6 つの解決策

この記事では、IDEA が MySQL データベースに接続できない問題に対する 6 つの解決策を主に...

PrometheusとGrafanaを使用したMySQLサーバーのパフォーマンス監視の詳細な説明

概要Prometheus は、HTTP プロトコルを介してリモート マシンからデータを収集し、ローカ...

MySQL 8.0 以降の一般的なコマンドの詳細な説明

リモートアクセスを有効にする次のコマンドを実行して、root ユーザーのリモート アクセス権を有効に...

vue+antv でレーダーチャートを実装するためのサンプルコード

1. 依存関係をダウンロードするnpm インストール @antv/データセットnpm インストール ...

Windows/Mac で Docker を使用して MySQL (utf8 を含む) をインストールする

目次1. MacへのDockerのインストール2. Win 10 システムでの Docker のイン...