如何将单声道<String>转换为单声道<MyObject>?



我正在编写一个简单的 get 方法来从 API URL 检索评论。API 以字符串形式返回 json 数据。返回Mono<Object>会引发错误。请在下面找到 HTTP 响应。

{
    "timestamp": "2019-02-05T11:25:33.510+0000",
    "path": "Some URL",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Content type 'text/plain;charset=utf-8' not supported for bodyType=java.lang.Object"
}

我发现响应是一个字符串。所以返回Mono<String>工作正常。但我想从 API 响应返回Mono<MyObject>

如何将Mono<String>转换为Mono<MyObject>?除了如何在反应式 Java 中从 Mono

让我知道您需要更多信息。

这就是我解决问题的方式。使用map检索字符串,并使用ObjectMapper类将该字符串转换为我的POJO类。

@Service
public class DealerRaterService {
    WebClient client = WebClient.create();
    String reviewBaseUrl = "some url";
    public Mono<DealerReview> getReviews(String pageId, String accessToken)
            throws JsonParseException, JsonMappingException, IOException {
        String reviewUrl = reviewBaseUrl + pageId + "?accessToken=" + accessToken;
        Mono<String> MonoOfDR = client.get().uri(reviewUrl).retrieve().bodyToMono(String.class);
        return MonoOfDR.map(dealerRater -> {
            try {
                DealerReview object = new ObjectMapper().readValue(dealerRater, DealerReview.class);
                return object;
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        });
    }
}

相关内容

  • 没有找到相关文章

最新更新