programing

스프링 부트에서 json 개체(변수) 이름을 변경하는 방법

yellowcard 2023. 9. 17. 12:13
반응형

스프링 부트에서 json 개체(변수) 이름을 변경하는 방법

안녕하세요 저는 스프링부팅과 JSON이 처음이라 응답하여 오는 변수 이름 변경에 도움이 필요합니다.

이를 입력으로 간주합니다.

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

이에 대한 대응으로 이 형식이 필요합니다.

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

지도를 만들수 있나요?"id"로."roll number"어떤 식으로든?스프링부트에서 이를 달성하는 방법은?

미리 감사드립니다.

upadte- 이것은 내 모델 수업입니다.

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

이것은 내 서비스 클래스입니다. 여기 addPerson() 함수에서 id를 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);
    }

나의 컨트롤러

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

이제 SOAPUI 테스트(텍스트를 스냅샷으로 쓰는 것은 업로드되지 않음)

GET 요청의 경우: endpoint-http://localhost:8080:Resource-/persons/all

반응-

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

이제 게시물: endpoint-http://localhost:8080:Resource-/persons/all

매체형-

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

내가 받는 것

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

내가 원하는 응답

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

ID 속성에 대해 getter 메서드가 있다고 가정하면 프로젝트에 com.fasterxml.jackson.core 종속성을 추가하고 메서드에 다음과 같이 주석을 달 수 있습니다.

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

모델 수업을 변경한 후에야 겨우 제대로 맞았습니다.

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

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

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

언급URL : https://stackoverflow.com/questions/38635472/how-to-rename-json-objectsvariables-name-in-spring-boot

반응형