So benennen Sie die json-Objekte(Variablen) Namen in den Frühling starten
Hallo, ich bin neu in spring boot und JSON und brauchen Hilfe bei der Umbenennung der Variablen name kommt in der Antwort.
Betrachten dies als ein Eingang
"1": {
"id": "1",
"firstName": "Cdgdghirayu",
"lastName": "Sinfsdgdgghvi",
"age": 23
}
Nun in der Antwort, die ich brauche in diesem format
"1": {
"Roll number": "1",
"firstName": "Cdgdghirayu",
"lastName": "Sinfsdgdgghvi",
"age": 23
}
können wir anzeigen "id"
zu "roll number"
in irgendeiner Weise?
Wie das zu erreichen ist in spring-boot?
Vielen Dank im Voraus
upadte-
Das ist meine model-Klasse
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;
}
}
Dies ist mein service Klasse
Hier in addPerson () - Funktion habe ich die id, als Ihre Einnahme-id als null..
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);
}
Meine 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;
}
Nun in SOAPUI-Tests(schreiben von text als Schnappschüsse nicht hochladen)
für die GET-Anforderung : endpoint-http://localhost:8080 :Ressourcen/Personen/alle
Antwort-
{
"2": {
"firstName": "Himanshu",
"lastName": "Singhvi",
"age": 20,
"Roll Number": "2"
},
"1": {
"firstName": "Chirayu",
"lastName": "Singhvi",
"age": 23,
"Roll Number": "1"
}
}
Nun für Post- : Endpunkt-http://localhost:8080 :Ressourcen/Personen/alle
Mediatype-
{
"firstName": "Rahul",
"lastName": "Jain",
"age": 23,
"id": "6"
}
Antwort, welche ich erhalte
{
"timestamp": 1469790685110,
"status": 500,
"error": "Internal Server Error",
"exception": "java.lang.NullPointerException",
"message": "No message available",
"path": "/persons/all"
}
Antwort, ich will
{
"firstName": "Rahul",
"lastName": "Jain",
"age": 23,
"Roll number": "6"
}
InformationsquelleAutor Chirayu Singhvi | 2016-07-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, Sie haben eine getter Methode für die id-Eigenschaft, Sie können versuchen, indem die com.fasterxml.jackson.Kern Abhängigkeit zu Ihrem Projekt und kommentieren Sie Ihre Methode so:
Ein problem auftrat, jetzt, da ich mit @jsonProperty , wenn ich das Tue, post-Anforderung, die als { "firstName": "Chfirayu", "lastName": "Singghhvi", "age": 23, "id": "6" } sein gibt null ponter Ausnahme, gibt es eine Möglichkeit zu schreiben post im original-format oder muss ich das mit roll-Nummer statt der id?
Ich weiß nicht, die vollständigen Kontext Ihrer Implementierung, so würde ich nicht wissen, wie genau Ihr Umgang mit post-Anfrage. Können Sie nach Ihrer Umsetzung snippet in die Frage bitte.
Ich habe aktualisiert die Frage bitte haben Sie einen Blick...
richtig, können Sie versuchen, indem @JsonProperty auf die getter-und nicht, wenn Ihre Deklaration der id, und versuchen Sie es erneut bitte.
InformationsquelleAutor Simple-Solution
Es endlich richtig
nur nach änderungen in meiner model-Klasse.
InformationsquelleAutor Chirayu Singhvi