728x90
네이버 사용자 정보 응답 처리 개선 - JsonDocument → JsonSerializer
기존에는 네이버 사용자 정보를 처리할 때, 아래처럼 JsonDocument
와 GetProperty()
를 활용하는 방식이 일반적이었습니다:
var userInfoJson = JsonDocument.Parse(json).RootElement;
var response = userInfoJson.GetProperty("response");
var naverId = response.GetProperty("id").GetString();
var email = response.TryGetProperty("email", out var emailProp) ? emailProp.GetString() : null;
하지만 이 방식은 유지보수성과 가독성이 떨어지며, 프로퍼티 누락 시 런타임 오류가 발생할 수 있습니다.
따라서 System.Text.Json
의 JsonSerializer.Deserialize
를 사용하여 객체로 한 번에 변환하는 방식이 더 효율적입니다.
📌 네이버 응답 예시 (임의 데이터)
{
"resultcode": "00",
"message": "success",
"response": {
"id": "a1b2c3d4e5f6g7h8i9j0",
"email": "hanuser@naver.com",
"name": "한개발"
}
}
✅ C# POCO 모델 정의
public class NaverApiResponse
{
public string ResultCode { get; set; }
public string Message { get; set; }
public NaverUserInfo Response { get; set; } = new();
}
public class NaverUserInfo
{
public string Id { get; set; } = "";
public string? Email { get; set; }
public string? Name { get; set; }
}
✅ Deserialize 예시 코드
var response = await httpClient.SendAsync(request);
response.EnsureSuccessStatusCode();
var json = await response.Content.ReadAsStringAsync();
var naver = JsonSerializer.Deserialize<NaverApiResponse>(json);
if (naver?.Response == null)
throw new Exception("네이버 사용자 정보 파싱 실패");
var id = naver.Response.Id;
var email = naver.Response.Email;
var name = naver.Response.Name;
✅ 장점 요약
- 안정성 향상: 구조화된 객체 기반 파싱으로 예외 발생률 감소
- 가독성 향상: 한눈에 데이터 구조 파악 가능
- 유지보수 용이: JSON 구조가 바뀌어도 모델만 수정하면 됨
결론적으로, 네이버 로그인 연동 시 사용자 정보를 JSON 객체로 바로 매핑하여 처리하면 코드가 훨씬 간결하고 안전해집니다.
728x90
'React > React 실습' 카테고리의 다른 글
[SSO] 네이버 소셜 로그인 연동 및 보안 고려사항, (팝업 기반 소셜 로그인 처리 방식) (0) | 2025.04.10 |
---|---|
[OAuth2] 기존 시스템에 네이버 소셜 로그인 기능 연동하기 (JWT + 팝업 방식) (0) | 2025.04.02 |
[React] Material-UI Popover 위치 보정과 애니메이션 적용 시행착오 기록 (0) | 2025.03.14 |
[React] Material-UI Popover에서 Popper로 전환한 시행착오 (0) | 2025.03.14 |
[React] Drawer와 Tab, Accordian - Console 콘솔에러 제거하기 (0) | 2025.02.04 |
댓글