2016-07-28 7 views
2

Hallo Ich bin neu zu Spring-Boot und JSON und Hilfe beim Umbenennen der Variablen Name kommt als Antwort.Wie JSON-Objekte (Variablen) Name im Frühjahr Boot umbenennen

dies als Eingang betrachten nun

"1": { 
     "id": "1", 
     "firstName": "Cdgdghirayu", 
     "lastName": "Sinfsdgdgghvi", 
     "age": 23 
    } 

in respone ich in diesem Format benötigen

"1": { 
     "Roll number": "1", 
     "firstName": "Cdgdghirayu", 
     "lastName": "Sinfsdgdgghvi", 
     "age": 23 
    } 

können wir "id"-"roll number" in irgendeiner Weise abzubilden? Wie erreicht man dies im Frühjahr-Boot?

Vielen Dank im Voraus

upadte- Das ist meine Modellklasse

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

Das ist meine Dienstklasse Hier in addPerson() Funktion I id als Einnahme-ID als null gesetzt habe. .

package service; 

import java.util.Hashtable; 
import org.springframework.stereotype.Service; 
import model.Person; 

@Service 
public class PersonService { 
    Hashtable<String,Person> persons=new Hashtable<String,Person>(); 
    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<String,Person> 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); 
    } 

Mein Controller-Klasse

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<String,Person> 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; 
    } 

Jetzt in SOAPUI Prüfung (das Schreiben von Text als Schnappschüsse Hochladen nicht)

für GET-Anfrage: endpoint- http://localhost:8080: Ressourcen-/Personen/alle

response-

{ 
    "2": { 
     "firstName": "Himanshu", 
     "lastName": "Singhvi", 
     "age": 20, 
     "Roll Number": "2" 
    }, 
    "1": { 
     "firstName": "Chirayu", 
     "lastName": "Singhvi", 
     "age": 23, 
     "Roll Number": "1" 
    } 
} 

Jetzt für post-: endpoint- http://localhost:8080: Ressourcen-/Personen/alle

Mediatype-

{ 
    "firstName": "Rahul", 
    "lastName": "Jain", 
    "age": 23, 
    "id": "6" 
} 

Antwort, was ich

{ 
    "timestamp": 1469790685110, 
    "status": 500, 
    "error": "Internal Server Error", 
    "exception": "java.lang.NullPointerException", 
    "message": "No message available", 
    "path": "/persons/all" 
} 

Antwort bin immer, dass ich

{ 
    "firstName": "Rahul", 
    "lastName": "Jain", 
    "age": 23, 
    "Roll number": "6" 
} 

Antwort

5

Sie wollen Unter der Annahme haben Getter-Methode für die Eigenschaft id, wenn Sie dann com.fasterxml.jackson.core Abhängigkeit zu einem Projekt versucht haben, das Hinzufügen und Dann notieren Sie Ihre Methode wie folgt:

@JsonProperty("Roll Number") public Long getId(){..}

+0

Es funktionierte dank ... –

+0

Ein Problem aufgetreten jetzt, wie ich @jsonProperty verwende, wenn ich als Post-Anforderung tue { "firstname": "Chfirayu", "nachName": "Singghhvi", "age": 23, "id": "6" } es geben null ponter ausnahme, gibt es eine möglichkeit, post im originalformat zu schreiben oder ich muss rollennummer statt id? –

+0

Ich kenne diesen vollständigen Kontext Ihrer Implementierung nicht, daher wüsste ich nicht genau, wie genau Ihre Bearbeitungspost angefordert wird. Kannst du bitte dein Implementierungs-Snippet in der Frage posten? –

0

Endlich richtig gemacht machte nur folgende Änderungen in meiner Modellklasse.

@JsonProperty("Roll Number") 
private String id; 

@JsonProperty("Roll Number") 
public String getId() { 
    return id; 
} 

@JsonProperty("id") 
public void setId(String id) { 
    this.id = id; 
}