작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
20
0
Json형태의 request 에서 아래 예제 그대로 진행했는데, 자꾸 500 error가 나와서요
java 24, springboot 2.5.5
@Slf4j
@Controller
public class RequestBodyJsonController {
private ObjectMapper objectMapper = new ObjectMapper();
@PostMapping("/request-body-json-v1")
public void requestBodyJsonV1(HttpServletRequest request, HttpServletResponse response) throws IOException {
ServletInputStream inputStream = request.getInputStream();
String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);
log.info("messageBody={}", messageBody);
HelloData helloData = objectMapper.readValue(messageBody, HelloData.class);
log.info("username={}, age={}", helloData.getUsername(), helloData.getAge());
response.getWriter().write("ok");
}
}
[postman] 수행결과
{
"timestamp": "2025-08-24T05:03:39.632+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/request-body-json-v1"
}
[인텔리제이 로그]
2025-08-24T14:03:39.540+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2025-08-24T14:03:39.541+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet : Completed initialization in 0 ms
2025-08-24T14:03:39.570+09:00 INFO 6552 --- [springmvc] [nio-8080-exec-1] h.s.b.request.RequestBodyJsonController : messageBody={"usernsme":"aaa", "age":20}
2025-08-24T14:03:39.620+09:00 ERROR 6552 --- [springmvc] [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "usernsme" (class hello.springmvc.basic.HelloData), not marked as ignorable (2 known properties: "username", "age"])
at [Source: REDACTED StreamReadFeature.INCLUDE_SOURCE_IN_LOCATION
disabled); line: 1, column: 14] (through reference chain: hello.springmvc.basic.HelloData["usernsme"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:61) ~[jackson-databind-2.19.2.jar:2.19.2]
at com.fasterxml.jackson.databind.DeserializationContext.handleUnknownProperty(DeserializationContext.java:1180) ~[jackson-databind-2.19.2.jar:2.19.2]
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:2244) ~[jackson-databind-2.19.2.jar:2.19.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1823) ~[jackson-databind-2.19.2.jar:2.19.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1801) ~[jackson-databind-2.19.2.jar:2.19.2]
at
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. 최지나님.
Postman으로 JSON 데이터를 전송할 때 500 에러가 발생하는 이유는 username
필드를 usernsme
라고 오타가 난 상태로 요청을 보냈기 때문입니다. HelloData
클래스에 정의된 필드는 username
이지만 전송하는 데이터의 필드명이 잘못 작성된 것을 확인할 수 있습니다.
{
"username": "aaa",
"age": 20
}
lenient
모드로 전환하거나, Fallback으로 Unknown Property를 무시하도록 설정할 수 있습니다. 적절한 예외 처리를 추가하면 디버깅에 도움이 됩니다.자세한 Jackson 활용에 대한 내용이 추가로 궁금하시다면 Jackson의 UnrecognizedPropertyException 관련 질의를 참고할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.