Monday 23 December 2019

Spring REST Service: Remove null objects in json response


Using below statement we can remove null values from json response.
@JsonInclude(JsonInclude.Include.NON_NULL)

Example
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Employee {
    //...
}

Find the below working application.

Employee.java
package com.sample.app.model;

import com.fasterxml.jackson.annotation.JsonInclude;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Employee {
 private int id;
 private String firstName;
 private String lastName;

 public Employee(int id, String firstName, String lastName) {
  super();
  this.id = id;
  this.firstName = firstName;
  this.lastName = lastName;
 }

 public int getId() {
  return id;
 }

 public void setId(int id) {
  this.id = id;
 }

 public String getFirstName() {
  return firstName;
 }

 public void setFirstName(String firstName) {
  this.firstName = firstName;
 }

 public String getLastName() {
  return lastName;
 }

 public void setLastName(String lastName) {
  this.lastName = lastName;
 }

 @Override
 public String toString() {
  StringBuilder builder = new StringBuilder();
  builder.append("Employee [id=").append(id).append(", firstName=").append(firstName).append(", lastName=")
    .append(lastName).append("]");
  return builder.toString();
 }

}


EmployeeRepository.java
package com.sample.app.repository;

import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.sample.app.model.Employee;

@Repository
public class EmployeeRepository {

 private static final List<Employee> emps = new ArrayList<>();

 static {
  Employee emp1 = new Employee(1, "Sunil", "Dayanand");
  Employee emp2 = new Employee(2, "Keerthi", "Shetty");
  Employee emp3 = new Employee(3, "Ram", "Anand");
  Employee emp4 = new Employee(4, null, "Anand");
  Employee emp5 = new Employee(5, "Ram", null);
  Employee emp6 = new Employee(6, null, null);

  emps.add(emp1);
  emps.add(emp2);
  emps.add(emp3);
  emps.add(emp4);
  emps.add(emp5);
  emps.add(emp6);
 }

 public List<Employee> all() {
  return emps;
 }

}


EmployeeController.java
package com.sample.app.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.sample.app.model.Employee;
import com.sample.app.repository.EmployeeRepository;

@RestController
@RequestMapping("api/v1/")
public class EmployeeController {

 @Autowired
 private EmployeeRepository empRepo;

 @RequestMapping(value = "employees", method = RequestMethod.GET)
 public ResponseEntity<List<Employee>> all() {
  return ResponseEntity.ok(empRepo.all());
 }
}


App.java
package com.sample.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
 public static void main(String[] args) {

  SpringApplication.run(App.class, args);

 }
}


pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 <modelVersion>4.0.0</modelVersion>
 <groupId>springRest</groupId>
 <artifactId>springRest</artifactId>
 <version>1</version>

 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.1.6.RELEASE</version>
 </parent>

 <name>springbootApp</name>
 <url>http://maven.apache.org</url>

 <properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 </properties>

 <dependencies>

  <dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
  </dependency>

 </dependencies>
</project>

Total project structure looks like below.

Run App.java.


Open the url ‘http://localhost:8080/api/v1/employees’, you will get below response.
[{
 "id": 1,
 "firstName": "Sunil",
 "lastName": "Dayanand"
}, {
 "id": 2,
 "firstName": "Keerthi",
 "lastName": "Shetty"
}, {
 "id": 3,
 "firstName": "Ram",
 "lastName": "Anand"
}, {
 "id": 4,
 "lastName": "Anand"
}, {
 "id": 5,
 "firstName": "Ram"
}, {
 "id": 6
}]

As you see above response
a. For the employee with id 4, firstName field not exist in the response.
b. For the employee with id 5, firstName field not exist in the response.
c. For the employee with id 6, firstName, lastName fields not exist in the response.

You can download complete working application from this link.

Previous                                                    Next                                                    Home

No comments:

Post a Comment