次の方法で共有


Java 用 Azure JSON 共有ライブラリ - バージョン 1.1.0

ビルド ドキュメント

Azure JSON には、JSON の共有プリミティブ、抽象化、ヘルパーが用意されています。

作業の開始

前提条件

パッケージを組み込む

<dependency>
  <groupId>com.azure</groupId>
  <artifactId>azure-json</artifactId>
  <version>1.1.0</version>
</dependency>

主要な概念

JsonSerializable

JsonSerializable は、オブジェクト自体が処理方法のロジックを管理するストリーム スタイルのシリアル化を使用して、オブジェクトを JSON でシリアル化および逆シリアル化する方法を定義するために使用されます。 インターフェイスは、 へのオブジェクトの書き込みを処理するインスタンスベースtoJsonの API と、 からを読み取JsonReaderってオブジェクトJsonWriterを作成する方法を定義するために実装が提供する必要がある静的 fromJson API を提供します。実装が指定UnsupportedOperationExceptionされていない場合はスローされます。

JsonToken

JsonToken は、JSON ストリームの現在の状態を示す基本的な列挙型です。

JsonReader

JsonReader では、基本的な読み取りプリミティブ型とボックス化されたプリミティブ型の両方と、JSON を読み取るための API である配列、マップ、オブジェクトの読み取りが便利です。 JsonReader は、実装がこのパッケージの test-jar (JsonReaderContractTests) によって提供されるテストに合格する限り、基になる JSON パーサーが Jackson や GSON などのそれを実装できるようにするために提供されます。

JsonReader は、 が呼び出されるまで nextToken JSON ストリーム内で進行しません。つまり JsonReader.getInt 、JSON ストリームが前方に進むまで nextToken 、エラーなしで同じ整数を無期限に返すように呼び出すことができます。

JsonReaderでは、JSON 文字列を数値に変換する、またはその逆の変換を行うなどの JSON 型間の型変換と、一般的に使用される非標準の JSON 値 (、 -INFINFInfinity-InfinityなどNaN) を使用できます。

JsonReaderは JSON 入力ソースの所有権を取得しないため、 または Readerを使用して InputStream JSON が提供されている場合、リソースは閉じられません。

入れ子の制限

JsonReaderのジェネリック readUntyped API は、読み取られるオブジェクトがどれだけ深く入れ子になっているかを追跡します。 入れ子が の1000IllegalStateExceptionしきい値を超える場合は、 を防ぐために StackOverflowErrorがスローされます。

JsonWriter

JsonWriter では、基本的なプリミティブの書き込みとボックス化されたプリミティブ型の両方が提供されます。また、JSON を書き込むための API である配列、マップ、オブジェクトの記述が便利です。 JsonWriter は、実装がパッケージの test-jar (JsonWriterContractTests) によって提供されるテストに合格する限り、基になる JSON ライターが Jackson や GSON などのそれを実装できるようにするために提供されます。

JsonWriterでは、一般的に使用される非標準の JSON 値 (、INF-INFInfinity-Infinity、 などNaN) を または writeRawValueを使用してwriteNumberField書き込むことが可能になります。

JsonWriterは、null byte[]BooleanStringNumberフィールドを使用してwriteNullField書き込む必要がある場合、フィールド、writeBinaryFieldwriteBooleanFieldまたは として書き込まれるときに null 値、、、writeNumberFieldまたは writeStringField値を書き込まない。

JsonWriterに書き込まれたコンテンツが基になるコンテナーの種類 (通常は または Writer) にフラッシュされるように、定期的にフラッシュするOutputStream必要があります。 フラッシュに失敗すると、コンテンツが失われる可能性があります。 フラッシュ コンテンツをJsonWriter閉じると、使用が完了したら が閉じられる try-with-resources ブロックJsonWriterで を使用することをお勧めしますJsonWriter

JsonWriterは JSON 出力ソースの所有権を取得しないため、JSON が または WriterOutputSteam書き込まれている場合、リソースは閉じられません。

JSON 状態管理

書き込まれる JSON が有効であることを確認するために、 を使用して JsonWriteContext JSON の状態を維持し、JsonWriter書き込みを試行するたびに操作が有効かどうかを検証します。 の実装JsonWriterでは、状態が正しく追跡されていることを確認する必要がありますROOTROOT。たとえば、JSON 状態が何も書き込まれず、JSON フィールド名の書き込みが許可されていない場合などです。

JsonProvider

JsonProviderは、クラスパスで見つかった実装を使用して s と JsonWriters を作成できるようにするJsonReaderサービス プロバイダー インターフェイスです。 JsonProvider クラスパスで実装が見つからない場合は、このパッケージによって提供される既定の実装を作成することもできます。

JsonOptions

JsonOptionsには、s と JsonWriters のすべての実装によって尊重される必要がある構成がJsonReader含まれています。 現時点では、数値以外の数値、NaNINFInfinity-INFおよび が、既定の設定である の JSON 読み取りと-Infinity書き込みでサポートされているかどうかを判断するための構成は 1 つだけで、数値以外のtrue数値が許可されます。

SPI 実装の提供

JsonReaderおよび JsonWriter は、 および JsonProviders によってJsonProvider使用されるサービス プロバイダー インターフェイスであり、クラス パスから実装を読み込むことができます。 Azure JSON パッケージは、クラス パスで見つからない場合に使用される既定の実装を提供します。 カスタム実装を提供するには、独自のパッケージに 、JsonWriter、および JsonProvider を実装JsonReaderし、パッケージが のJsonProviderインスタンスを提供することを示します。 実装が正しいことを確認するには、Azure JSON のスコープ付き依存関係をtest含め、、JsonWriterContractTests、および JsonProviderContractTestsを拡張しますJsonReaderContractTests。 これらのテストでは、および によってJsonReaderJsonWriter設定されたすべての基本的なコントラクト要件の概要を説明しJsonProvider、実装の検証を提供するためにいくつかの複雑なシナリオをテストします。

Azure JSON の使用方法の詳細な例については、 README のサンプル を参照してください。

トラブルシューティング

バグが発生した場合は、 GitHub の問題 を使用して問題を報告するか、 Azure Java SDK の StackOverflow をチェックアウトしてください。

次のステップ

Azure Core を使用して構築された Azure ライブラリの使用を開始します。

共同作成

このリポジトリへの投稿の詳細については、 投稿ガイドを参照してください。

  1. フォークする
  2. 機能ブランチを作成する (git checkout -b my-new-feature)
  3. 変更をコミットする (git commit -am 'Add some feature')
  4. ブランチにプッシュする (git push origin my-new-feature)
  5. 新しい Pull Request を作成する

インプレッション数