반응형
스프링 부트에서 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
반응형
'programing' 카테고리의 다른 글
AVFoundation, StillImageSynchronousFromConnection을 캡처할 때 셔터음을 끄는 방법? (0) | 2023.09.17 |
---|---|
현재 버전의 Android Gradle 플러그인에서는 주문형 구성이 지원되지 않습니다. (0) | 2023.09.17 |
읽기 전용 모드에서 OpenPyXL이 있는 Excel 워크시트의 열 이름 가져오기 (0) | 2023.09.12 |
MariaDB: WITH 문과 함께 "INSERT ... SELECT"를 사용하는 방법 (0) | 2023.09.12 |
ODBC와 ADO.NET의 차이점은 무엇입니까? (0) | 2023.09.12 |