- docx (Microsoft Word 形式);
- pdf (Adobe 形式);
- mobi (Amazon Kindle デバイスで一般的に使用されます)。
- などなど (ePub、djvu、fb2 など)。
JSON
JavaScript オブジェクト表記法。この形式についてはすでに少しはご存知でしょう。これについてはこのレッスンで説明し、ここではJSON へのシリアル化について説明しました。それには理由があってその名前が付けられました。JSON に変換された Java オブジェクトは、実際には JavaScript のオブジェクトとまったく同じように見えます。私たちのオブジェクトを理解するために JavaScript を理解する必要はありません。
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
}
単一のオブジェクトを送信することに限定されません。JSON 形式はオブジェクトの配列を表すこともできます。
[
{
"title": "War and Peace",
"author": "Lev Tolstoy",
"year": 1869
},
{
"title": "Demons",
"author": "Fyodor Dostoyevsky",
"year": 1872
},
{
"title": "The Seagull",
"author": "Anton Chekhov",
"year": 1896
}
]
JSON は JavaScript オブジェクトを表すため、次の JavaScript データ形式をサポートします。
- 文字列;
- 数字。
- オブジェクト。
- 配列;
- ブール値 (true と false);
- ヌル。
-
人間が読める形式。エンド ユーザーが人間である場合、これは明らかな利点です。たとえば、サーバーにフライトのスケジュールが含まれるデータベースがあるとします。人間の顧客は、自宅のコンピューターの前に座って、Web アプリケーションを使用してこのデータベースにデータを要求します。データを彼が理解できる形式で提供する必要があるため、JSON は優れたソリューションです。
-
シンプルさ。とてもシンプルです:) 上では、2 つの JSON ファイルの例を示しました。また、JavaScript (ましてや JavaScript オブジェクト) について聞いたことがなくても、そこで説明されているオブジェクトの種類を簡単に理解できます。
JSON ドキュメント全体は、いくつかの画像を含むWeb ページで構成されています。 -
幅広い用途。JavaScript は主要なフロントエンド言語であり、独自の要件があります。JSON の使用は必須です。したがって、膨大な数の Web サービスがデータ交換形式として JSON を使用しています。最新の IDE はすべて、JSON 形式 (IntelliJ IDEA を含む) をサポートしています。JSON の操作を可能にするために、あらゆる種類のプログラミング言語用に多数のライブラリが作成されています。
YAML
当初、YAML は「Yet Another Markup Language」の略でした。開始当初は、XML の競合相手として位置付けられていました。現在では、時間の経過とともに、YAML は「YAML はマークアップ言語ではない」という意味になりました。正確には何ですか? コンピューター ゲームのキャラクターを表すために、Warrior、Mage、Thief の 3 つのクラスを作成する必要があると想像してみましょう。彼らは次のような特徴を持っています:強さ、敏捷性、持久力、一連の武器。クラスを記述する YAML ファイルは次のようになります。
classes:
class-1:
title: Warrior
power: 8
agility: 4
stamina: 7
weapons:
- sword
- spear
class-2:
title: Mage
power: 5
agility: 7
stamina: 5
weapons:
- magic staff
class-3:
title: Thief
power: 6
agility: 6
stamina: 5
weapons:
- dagger
- poison
YAML ファイルはツリー構造になっており、一部の要素は他の要素にネストされています。各レベルを表すために使用する特定の数のスペースを使用してネストを制御できます。YAML 形式の利点は何ですか?
-
人間が読める形式。繰り返しになりますが、説明のない YAML ファイルを見ても、そのファイルで説明されているオブジェクトを簡単に理解できます。YAML は人間が判読できるため、Web サイトyaml.org は通常の YAML ファイルです :)
-
コンパクトさ。ファイル構造はスペースを使用して作成されます。括弧や引用符を使用する必要はありません。
-
プログラミング言語のネイティブ データ構造のサポート。JSON や他の多くの形式に対する YAML の大きな利点は、さまざまなデータ構造をサポートしていることです。それらには次のものが含まれます。
-
!!map
重複することができない、順序付けされていないキーと値のペアのセット。 -
!!omap
重複できないキーと値のペアの順序付けされたシーケンス。 -
!!pairs:
重複する可能性のあるキーと値のペアの順序付けされたシーケンス。 - !!set
互いに等しくない、順序のない値のシーケンス。 - !!seq
任意の値のシーケンス。
これらの構造のいくつかは Java に見覚えがあるでしょう。:) これは、プログラミング言語のさまざまなデータ構造を YAML にシリアル化できることを意味します。
-
-
アンカーとエイリアスを使用する機能
これらのマーカーを使用すると、YAML ファイル内の要素を識別し、それが繰り返し出現する場合にファイルの残りの部分でそれを参照できます。アンカーは記号&を使用して作成され、エイリアスは*を使用して作成されます。
レフ・トルストイの本を説明したファイルがあるとします。各書籍の著者名を書き出すのを避けるために、単純に leo アンカーを作成し、必要なときにエイリアスを使用してそれを参照します。
books: book-1: title: War and Peace author: &leo Leo Tolstoy year: 1869 book-2: title: Anna Karenina author: *leo year: 1873 book-3: title: Family Happiness author: *leo year: 1859
このファイルが解析されると、エイリアスの正しい場所に値「Leo Tolstoy」が置き換えられます。
- YAML は他の形式のデータを埋め込むことができます。たとえば、JSON:
books: [ { "title": "War and Peace", "author": "Leo Tolstoy", "year": 1869 }, { "title": "Anna Karenina", "author": "Leo Tolstoy", "year": 1873 }, { "title": "Family Happiness", "author": "Leo Tolstoy", "year": 1859 } ]
他のシリアル化形式
XML
この形式はタグ ツリーに基づいています。
<book>
<title>Harry Potter and the Philosopher’s Stone</title>
<author>J. K. Rowling</author>
<year>1997</year>
</book>
各要素は開始タグと終了タグ (<> と </>) で構成されます。各要素にはネストされた要素を含めることができます。XML は、JSON や YAML と同じくらい優れた一般的な形式です (実際のプロジェクトについて話している場合)。XML については別のレッスンがあります。
BSON (バイナリ JSON)
その名前が示すように、BSON は JSON に非常に似ていますが、人間が判読できるものではなく、バイナリ データを使用します。そのため、画像やその他の添付ファイルの保存と転送に非常に適しています。さらに、BSON は、JSON では使用できないいくつかのデータ型をサポートします。たとえば、BSON ファイルには日付 (ミリ秒形式) や JavaScript コードの一部を含めることができます。一般的な MongoDB NoSQL データベースは、情報を BSON 形式で保存します。位置ベースのプロトコル
状況によっては、送信するデータの量を大幅に減らす必要がある場合があります (たとえば、大量のデータがあり、負荷を軽減する必要がある場合)。この状況では、位置ベースのプロトコルを使用できます。つまり、パラメーター自体の名前なしでパラメーター値を送信できます。
"Leo Tolstoy" | "Anna Karenina" | 1873
この形式のデータは、完全な JSON ファイルよりも必要なスペースが数倍少なくなります。もちろん、他のシリアル化形式もありますが、今すぐそのすべてを知る必要はありません :) アプリケーションを開発するときに現在の業界標準形式をよく理解し、その利点と他の形式との違いを覚えておくと良いでしょう。別。これでレッスンは終了です :) 今日はいくつかのタスクを解決することを忘れないでください。次回まで!:)
GO TO FULL VERSION