JSON 参照ライブラリ ( http://docs.oracle.com/javaee/7/api/javax/json/package-summary.html ) を使用していくつかのコードを書き始めたところ、単純な問題が発生しました。シンプルだが「醜い」解決策。
JsonObjects は、Map クラスによってサポートされているにもかかわらず、「不変」です。これは、それらを変更してはならないことを意味します。
オブジェクトを非常に動的に構築したい、たとえば、配列を取得してそれに要素を追加する、完全な「読み取り/書き込み」モデルを作成したいと考えています。
それでも、JsonObjectBuilder は「書き込み専用」インターフェイスを実装しているように見えます。そこに物を入れることはできますが、それらを読み取ることはできません (マップなどをサブクラス化しませんか?)。後で追加したい場合にそれを追跡するため(配列ビルダーを「読み取る」方法がないため...)
そのため、読み取り専用と書き込み専用の 2 つのインターフェイスがあり、唯一可能な変換は、書き込み専用から読み取り専用への変換であり、元に戻す方法はなく、JSON 構造を読み書きする方法はありません。
非常に明白な何かが欠けているように感じます...
明らかな「汚い」解決策は、もちろん、データを独自の構造に保存し、ビルド時にJSONビルダーに変換することですが、これは、データを変更して渡す必要があるJSONのレシーバーにはあまり役立ちません. 私のオブジェクトとそのオブジェクトの間の双方向インターフェース、または読み取り専用のjsonを(再帰的に)変換してビルダーに戻し、プロセスでそれを変更するコンバーター...
私は何が欠けていますか?JSON の独自の表現を作成し、それを RO / WO モデルに出し入れする必要があるのはなぜですか?
(はい、私はグーグルを試しましたが、私が思いついたものは何も役に立ちませんでした。それは私をさらに混乱させました...)