Sudhanshu Gupta
Sudhanshu Gupta

Reputation: 2315

Handle Json non existent keys spring boot

I am creating a requestModel and let say a person doesn't send me some keys. If that key is not present I want to put null if i get the value of the key. I don't want to investigate if a key is present or not .

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;
  }

}

Do we have any library or something where. 1. If i get the key and it is not present in the coming request json, i will get the null out of it and if the key is present and has value . It will be stored as value. 2. When writing the getter for s3bucket (getS3Bucket), i dont want to write it for everykey value. Is there a automatic way to do this.

I looked at lot of posts but the scenario is not there.

P.S - I am new to java

Upvotes: 0

Views: 582

Answers (1)

ikos23
ikos23

Reputation: 5354

I believe Jackson is exactly what you need. And if you are using Spring - it already uses Jackson under the hood I guess.

Here you can find some examples and documentation of how JSON mapping on to model class is done.

If you need to customize some behavior, you can use annotations like @JsonProperty (there are many).

If properties in your model class have the same names as properties in JSON, most probably you won't need to provide any further configs.

Here is a simple example:

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

And if you have JSON like this:

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

Jackson will do all the magic for you unless you need something very specific.

If something is not in JSON you get (let's say you received JSON without age) - corresponding property in model class will be null if it is object type and default value (0, false, etc.) for primitives (in our case age would be 0).

Upvotes: 1

Related Questions