title: How to rename json objects(variables) name in spring boot
body: <p>Hello  I am new to spring boot and JSON and need help in renaming the variable name coming in response.</p>
  
  <p>Consider this as a input</p>
  
  <pre><code>   "1":    {
        "id": "1",
        "firstName": "Cdgdghirayu",
        "lastName": "Sinfsdgdgghvi",
        "age": 23
     }
  </code></pre>
  
  <p>Now in respone I need in this format</p>
  
  <pre><code>   "1":    {
        "Roll number": "1",
        "firstName": "Cdgdghirayu",
        "lastName": "Sinfsdgdgghvi",
        "age": 23
     }
  </code></pre>
  
  <p>can we map <code>"id"</code> to <code>"roll number"</code> in some way?
  How to achieve this in spring-boot?</p>
  
  <p>Thanks in advance</p>
  
  <p>upadte-
  This is my model class</p>
  
  <pre><code>package model;
  
  import javax.xml.bind.annotation.XmlRootElement;
  import com.fasterxml.jackson.annotation.JsonProperty;
  
  @XmlRootElement
  public class Person {
  @JsonProperty("Roll Number")
  private String id;
  
  private String firstName;
  private String lastName;
  private int age;
  
  public Person() {
      super();
  }
  
  public Person(String id, String firstName, String lastName, int age) {
      super();
      this.id = id;
      this.firstName = firstName;
      this.lastName = lastName;
      this.age = age;
  }
  
  public String getId() {
      return id;
  }
  
  public void setId(String 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;
  }
  
  public int getAge() {
      return age;
  }
  
  public void setAge(int age) {
      this.age = age;
  }
  }
  </code></pre>
  
  <p>This is my service class
  Here in addPerson() function I have to set id as its taking id as null..</p>
  
  <pre><code>package service;
  
  import java.util.Hashtable;
  import org.springframework.stereotype.Service;
  import model.Person;
  
  @Service
  public class PersonService {
      Hashtable&lt;String,Person&gt; persons=new Hashtable&lt;String,Person&gt;();
      public PersonService(){
      Person p=new Person();
      p.setId("1");
      p.setFirstName("Chirayu");
      p.setLastName("Singhvi");
      p.setAge(23);
      persons.put("1",p);
  
      p=new Person();
      p.setId("2");
      p.setFirstName("Himanshu");
      p.setLastName("Singhvi");  
      p.setAge(20);
      persons.put("2",p);
      }
  
      public Person getPerson(String id){
      if(persons.containsKey(id))
      return persons.get(id);
      else return null;
      }
  
      public Hashtable&lt;String,Person&gt; getAll(){
      return persons;
      }
  
      public Person addPerson(Person person){
      persons.put(person.getId(),person);
  
      return person;
  }
  
      public Person updatePerson(Person person){
      if(person.getId().equals("0")){
      return null;
      }
      persons.put(person.getId(),person);
      return person;
  }
  
      public Person removePerson(String id) {
      return persons.remove(id);
      }
  </code></pre>
  
  <p>My controller class</p>
  
  <pre><code>package controller;
  
  import java.util.Hashtable;
  import org.apache.log4j.Logger;
  import org.apache.log4j.PropertyConfigurator;
  import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.http.MediaType;
  import org.springframework.web.bind.annotation.PathVariable;
  import org.springframework.web.bind.annotation.RequestBody;
  import org.springframework.web.bind.annotation.RequestMapping;
  import org.springframework.web.bind.annotation.RequestMethod;
  import org.springframework.web.bind.annotation.ResponseBody;
  import org.springframework.web.bind.annotation.RestController;
  import com.fasterxml.jackson.databind.annotation.JsonNaming;
  import model.Person;
  import service.PersonService;
  
  @RestController
  @RequestMapping("/persons")
  public class PersonController {
      static final Logger log = Logger.getLogger(PersonController.class.getName());
  
      PersonController(){
      log.info("entering controller class");
      }
  
      @Autowired
      PersonService personService;
  
      @RequestMapping("/all")
      public Hashtable&lt;String,Person&gt; getAll(){
      log.info("getting all  person details");
      System.out.println("syso is working");
      return personService.getAll();
      }
  
      @RequestMapping(value="/all",method=RequestMethod.POST,
              produces=MediaType.APPLICATION_JSON_VALUE,
              consumes=MediaType.APPLICATION_JSON_VALUE )
      @ResponseBody
      public Person addPerson(@RequestBody Person person){
      log.info("Adding person with id "+person.getId());
      person.getId();
      return personService.addPerson(person);
      }
  
      @RequestMapping(value="/{id}",method=RequestMethod.PUT,
              produces=MediaType.APPLICATION_JSON_VALUE,
              consumes=MediaType.APPLICATION_JSON_VALUE )
      @ResponseBody
      public Person updatePerson(@PathVariable("id") String id, 
              @RequestBody Person person){
      person.setId(id);
  
      log.info("Updating a partcular person details  with id "+id);
      return personService.updatePerson(person);
      }
  
      @RequestMapping(value="/{id}",method=RequestMethod.DELETE)
      public void removePerson(@PathVariable("id") String id){
       log.info("Removing the person details with id "+id);
       personService.removePerson(id);
      }
  
      @RequestMapping("/{id}")
      public Person getPerson(@PathVariable("id") String id){
      log.info("getting person details with id "+id);
      return personService.getPerson(id);
      }
  
      public void setDthDao(PersonService dao) {//for testing purpose
      personService=dao;
      }
  </code></pre>
  
  <p>Now in SOAPUI testing(writing text as snapshots are not uploading)</p>
  
  <p>for GET request  : endpoint-<a href="http://localhost:8080" rel="noreferrer">http://localhost:8080</a> :Resource-/persons/all</p>
  
  <p>response-</p>
  
  <pre><code>{
     "2": {
        "firstName": "Himanshu",
        "lastName": "Singhvi",
        "age": 20,
        "Roll Number": "2"
     },
     "1": {
        "firstName": "Chirayu",
        "lastName": "Singhvi",
        "age": 23,
        "Roll Number": "1"
     }
  }
  </code></pre>
  
  <p>Now for Post- : endpoint-<a href="http://localhost:8080" rel="noreferrer">http://localhost:8080</a> :Resource-/persons/all</p>
  
  <p>Mediatype-</p>
  
  <pre><code>{
    "firstName": "Rahul",
    "lastName": "Jain",
    "age": 23,
    "id": "6"
  }
  </code></pre>
  
  <p>Response what I am getting</p>
  
  <pre><code>{
     "timestamp": 1469790685110,
     "status": 500,
     "error": "Internal Server Error",
     "exception": "java.lang.NullPointerException",
     "message": "No message available",
     "path": "/persons/all"
  }
  </code></pre>
  
  <p>Response that I want</p>
  
  <pre><code>{
     "firstName": "Rahul",
     "lastName": "Jain",
     "age": 23,
     "Roll number": "6"
  }
  </code></pre>