テキスト応答をjsonにバインドし、micronautの宣言型クライアントにオブジェクトを配置する方法は?

jics

micronautに組み込まれているアプリで宣言型httpクライアントを作成しました。これは、text / htmlタイプで応答するサービスを消費する必要があります。

私はなんとかリストを手に入れることができましたが、LinkedHashMap中にはあります。そして私はそれらをの対象にしたいPharmacy

私の質問は、その応答をオブジェクトのリストに変換するにはどうすればよいですか?

@Client("${services.url}")
public interface PharmacyClient {
    @Get("${services.path}?${services.param}=${services.value}")
    Flowable<List<Pharmacy>> retrieve();
}
public class StoreService {

    private final PharmacyClient pharmacyClient;

    public StoreService(PharmacyClient pharmacyClient) {
        this.pharmacyClient = pharmacyClient;
    }

    public Flowable<List<Store>> all() {
        Flowable<List<Pharmacy>> listFlowable = this.pharmacyClient.retrieve();
        return listFlowable
                .doOnError(throwable -> log.error(throwable.getLocalizedMessage()))
                .flatMap(pharmacies ->
                        Flowable.just(pharmacies.stream() // here is a list of LinkedHashMap and i'd like to user Pharmacy objects
                                .map(pharmacy -> Store.builder().borough(pharmacy.getBoroughFk()).build())
                                .collect(Collectors.toList())
                        )
                );
    }
}

コード:https//github.com/j1cs/drugstore-demo/tree/master/backend

jics

私はこれで終わった。

@Client("${services.url}")
public interface PharmacyClient {
    @Get(value = "${services.path}?${services.param}=${services.value}")
    Flowable<Pharmacy[]> retrieve();
}
public class StoreService {

    private final PharmacyClient pharmacyClient;

    public StoreService(PharmacyClient pharmacyClient) {
        this.pharmacyClient = pharmacyClient;
    }

    public Flowable<List<Store>> all() {
        Flowable<Pharmacy[]> flowable = this.pharmacyClient.retrieve();
        return flowable
                .switchMap(pharmacies ->
                        Flowable.just(Arrays.stream(pharmacies)
                                .map(pharmacyStoreMapping)
                                .collect(Collectors.toList())
                        )
                ).doOnError(throwable -> log.error(throwable.getLocalizedMessage()));
    }

}

それでも、宣言型クライアントでリストに配列を変更できるかどうかを知りたいです。
一方、これは良いオプションだと思います。

アップデート

私はずっと間違っていました。まず、フレームワークがサービスを公開すると、すでに要素のリストで応答するため、フローアブルにリストを追加する必要はありません。だから最後に私はこれをしました:

@Client("${services.url}")
public interface PharmacyClient {
    @Get(value = "${services.path}?${services.param}=${services.value}")
    Flowable<Pharmacy> retrieve();
}
public class StoreService {

    private final PharmacyClient pharmacyClient;

    public StoreService(PharmacyClient pharmacyClient) {
        this.pharmacyClient = pharmacyClient;
    }

    public Flowable<Store> all() {
        Flowable<Pharmacy> flowable = this.pharmacyClient.retrieve();
        return flowable
                .switchMap(pharmacyPublisherFunction)
                .doOnError(throwable -> log.error(throwable.getLocalizedMessage()));

}

ご覧のとおり、httpクライアントはtext / htmlデータを自動的にjsonに変換し、それを適切に解析します。なぜ本当になのかわかりません。たぶん@JeffScottBrownは私たちにいくつかのヒントを与えることができます。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Google Cloud Endpoints(ゲートウェイ)を使用して、単一のAPIエンドポイントで複数のマイクロサービス(クラウド実行コンテナー)から結合された応答を作成するにはどうすればよいですか?

エラー:破棄されたオブジェクトにアクセスできません。このエラーの一般的な原因は、依存性注入から解決されたコンテキストを破棄することです

socket.ioクライアントを再接続しないようにする方法は?

新しいバージョンのswiftを使用するプロジェクトで、古いバージョンのswiftで記述されたライブラリを使用することは可能ですか?

WordJSアドイン-ユーザー固有のデータをクライアントマシンに保存する方法

安全なメッセージング反応ネイティブチャットプロジェクトを統合するにはどうすればよいですか?

インストール中に/ varをバインドする

ffmpegコマンドラインは出力をテキストファイルに書き込みます

参照アイテムのバージョンと言語を表示しないように検索フィールド付きのマルチリストを取得するにはどうすればよいですか?

変換後にLiveDataオブジェクトを取得するためのより良い方法は何ですか?

Oracle PL SQLのプロシージャで(オブジェクトタイプテーブル)の入力パラメータから値を取得するにはどうすればよいですか?

コマンドのスクリプトを明らかにする方法は?

オブジェクトの子から親キーを取得する方法

テキストをコンテナの幅に制限し、中央のスタイルを維持する

SpringBootのデフォルトのKafkaコンシューマーオブジェクトを取得する方法

Firebaseでデフォルトのプロジェクトホスティングをリセットするにはどうすればよいですか?

Scala:PlayFrameworkを使用してJsonの一部をオブジェクトにマップします

サブゲームオブジェクトを使用してゲームオブジェクトを再ペアレント化しようとすると、Unity3d変換の問題が発生します

NestJs httpリクエストを完全にカバーしてユニットテストする方法は?

AWS S3コピーオブジェクトはそれをローカルにダウンロードしますか?

リスト内の同じID、インデックス、名前の要素をダブルクリックするにはどうすればよいですか?

API呼び出し時にデータソースをバインドするSpringブートJpa

(Serilogの)EventLogシンクにイベントIDを設定する方法はありますか?

関数からグローバルに可変サイズのベクトルを宣言する方法はありますか?

Ember-CollectionViewの各アイテムにコントローラーを設定する方法

オプションのパラメータなしで子クラスのメソッドをオーバーライドするにはどうすればよいですか?

ネストされた配列の最後のインデックスにアクセスする方法

悪いAzurePowerShellアンインストールをクリーンアップする方法は?

文字列オブジェクトを文字列プールオブジェクトに変換するにはどうすればよいですか?