使用Gson

时间:2018-03-19 10:44:00

标签: java java-8 gson optional

我目前有以下代码:

String response = HttpClient.get(url);
Trip trip = new Gson().fromJson(response, Trip.class);

我已经转换了上面的代码,以便HttpClient.get()返回一个String的可选项,作为responsebody。 我想知道我是否可以使上面的代码成为单行代码,以便我可以拥有类似的东西:

HttpClient.get(url).map(r -> new Gson().fromJson(r, Trip.Class))

这有意义吗? 如何使上面的代码功能?

1 个答案:

答案 0 :(得分:1)

如果您已经提到过,重构后的HttpClient.get(url)现在返回Optional<String>而不是String,那么您希望在String上执行映射功能}将Optional包含在Trip实例中。

您实际上已经关闭了,您的问题是,您在<{1}}映射后返回的Optional<Trip>中所包含的值不展开当下。根据您认为哪种方法最适合手头的任务,有几种方法可以展开map(r -> new Gson().fromJson(r, Trip.Class))

以下几个例子:

使用Optional<T>解包:

orElse

使用Trip trip = HttpClient.get(url) .map(r -> new Gson().fromJson(r, Trip.Class)) .orElse(null); // or provide a default value if you have it in place

ifPresent

对于用于展开HttpClient.get(url) .map(r -> new Gson().fromJson(r, Trip.Class)) .ifPresent(e -> /* do something with the element*/); 类型的所有其他方法,可以找到here