Обрабатывать Json несуществующими ключами пружинной загрузки - PullRequest
0 голосов
/ 25 сентября 2019

Я создаю модель запроса и, скажем, человек не отправляет мне ключи.Если этого ключа нет, я хочу поставить ноль, если получу значение ключа.Я не хочу исследовать, есть ли ключ или нет.

public class CustomerModel {

  private Optional<String> s3Bucket;

  private Optional<String> docType;


  public String getS3Bucket() {
    if(s3Bucket.isPresent()) {
      return s3Bucket.get();
    } else {
      return null;
    }
  }

  public void setS3Bucket(Optional<String> s3Bucket) {
    this.s3Bucket = s3Bucket;
  }

  public Optional<String> getDocType() {
    return docType;
  }

  public void setDocType(Optional<String> docType) {
    this.docType = docType;
  }

}

Есть ли у нас какая-нибудь библиотека или что-то еще.1. Если я получу ключ, и он не будет представлен в следующем запросе json, я получу нулевое значение, и если ключ присутствует и имеет значение.Это будет сохранено как значение.2. При написании геттера для s3bucket (getS3Bucket) я не хочу писать его для значения Everykey.Есть ли автоматический способ сделать это.

Я посмотрел много постов, но сценарий не там.

PS - Я новичок в Java

1 Ответ

1 голос
/ 25 сентября 2019

Я считаю, Джексон - это именно то, что вам нужно.И если вы используете Spring - он уже использует Джексона под капотом, я думаю.

Здесь вы можете найти некоторые примеры и документацию о том, как осуществляется сопоставление JSON с классом модели.

Если вам нужно настроить какое-либо поведение, вы можете использовать аннотации, такие как @JsonProperty (их много).

Если свойства в вашем классе модели имеют те же имена, что и свойства в JSON, то, скорее всего, вам не нужно предоставлять никаких дополнительных настроек.

Вот простой пример:

public class User {
    @JsonProperty("userName")
    private String name;
    private int age;
    // getters and setters
}

И если у вас есть JSON, подобный этому:

{
  "userName" : "Foo Bar",
  "age" : 18
}

Джексон сделает всю магию за вас, если вам не нужно что-то очень конкретное.

Если что-то не в JSON, вы получаете (допустим, вы получили JSON без age) - соответствующее свойство в классе модели будет null, если это тип объекта и значение по умолчанию (0, false и т. Д.).) для примитивов (в нашем случае age будет 0).

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