получить свойство из заданного значения lombok - PullRequest
0 голосов
/ 21 апреля 2020

Привет Я пытался выяснить, как получить stateCode из Places объекта с помощью потока. Я использую lombok для анализа объекта json, который выглядит следующим образом:

{"post code": "90210", "country": "United States", "country abbreviation": "US", "places": [{"place name": "Beverly Hills", "longitude": "-118.4065", "state": "California", "state abbreviation": "CA", "latitude": "34.0901"}]}

Я создал класс для обработки объекта следующим образом:

@lombok.Value
public class ZipCode {
  @JsonAlias("post code")
  private final String postalCode;
  private final  Set<Places> places;

  public ZipCode() {
    this.postalCode = null;
    this.places = null;
  }

  public ZipCode(String postalCode, Set<Places> places) {
    this.postalCode = postalCode;
    this.places = places;
  }

  @lombok.Value
  private static class Places {
    @JsonAlias("state abbreviation")
    private  final String stateCode;
  }
}

Я думал, что если бы я использовал

ZipCode zip = getZipObject();
String stateCode = zip.getPlaces().stream().findFirst().toString();

, я бы смог получить stateCode в виде строки. В моем примере stateCode должен был быть "CA". Вместо этого я получаю Optional[ZipCode.Places(stateCode=NY)]. Если бы кто-нибудь мог помочь мне с этим, я был бы признателен. Я держу класс ZipCode в отдельном классе. Я хотел бы сохранить это так. Большинство примеров, которые у меня есть. При использовании stream, как правило, используется сам объект set. Я хочу избежать публичного доступа к моему Places объекту.

1 Ответ

0 голосов
/ 21 апреля 2020

Мне удалось получить свойство stateCode, изменив класс ZipCode следующим образом:

@lombok.Value
public class ZipCode {
  @JsonAlias("post code")
  private final String postalCode;
  private final  Set<Places> places;

  @lombok.Value
  public static class Places {
    @JsonAlias("state abbreviation")
    private  final String stateCode;
  }
}

Затем я использовал поток наподобие

if(zip.getPlaces().stream().findFirst().isPresent())
     String state = zip.getPlaces().stream().findFirst().get().getStateCode();

Это выдает «CA» для примера json. Надеюсь, это кому-нибудь поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...