[C#] JSON 데이터 POST 전송시 requestbody mapping이 안되는 문제
바로 직전에 포스팅한 c# get / post를 연습하다가 골치 아픈 문제가 있었다.
c#쪽에서 객체를 json 형태로 파싱 한 뒤 api 요청을 보냈는데 서버에서 도저히 json 데이터를 못 읽어오는 것이다.
당시 서버 쪽 세팅은 다음과 같았다.
그리고 c#쪽 세팅은 다음과 같았다.
이렇게 하면 c# 쪽에서 {"id" : "1111", "password" : "2222"}로 보내서
서버에서 requestbody 매핑이 될것이라 예상했는데 결과는 null이었다.
뭐가 문제 인지 몰라서 postman으로 테스트를 해보았다.
이렇게 실험했는데 매핑이 제대로 되었다.
그래서 머리가 터지기 시작했다.
그 와중에 차이를 발견했는데 내가 기대한 JSON 형태는 {"id" : "1111", "password" : "2222"} 였지만
막상 C#에서는 {"Id" : "1111", "Password" : "2222"} 로 key의 맨 앞자리가 대문자 형태인게 문제인 것이었다.
그래서 이걸 어떻게 바꿔줘야하는지 머리를 끙끙 싸맨 끝에 한 블로그에서 해결책을 발견했다.
https://blog.aliencube.org/ko/2015/03/24/tips-for-json-net-when-serialising-objects/
여기서 사용한 방식대로 JSON 객체 네이밍 세팅을 해주었더니 제대로 데이터가 전송되었다.
다른 사람들은 스프링부트에서 Lombok 때문에 문제가 생긴 케이스라서 나랑 너무 상황이 달라 당황스러웠다.
추가한 코드
var settings = new JsonSerializerSettings() { ContractResolver = new CamelCasePropertyNamesContractResolver() };
string jsonUserinfo = JsonConvert.SerializeObject(staff1, settings);
'skill > C#' 카테고리의 다른 글
[C#] 부모-자식 관계 두 개의 DataGridView 사용하기 (0) | 2021.12.09 |
---|---|
[C#] multipart/form-data 이미지 파일 전송 예제 (0) | 2021.10.15 |
[C#] HTTP GET / POST 요청 처리 (0) | 2021.10.12 |
[C#] 파일입출력(IO) - 스트림(stream), 직렬화(Serializable) (0) | 2021.09.16 |
[C#] 파일입출력(IO) - File, Directory (0) | 2021.09.16 |