일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- LEFT JOIN
- Banker's rounding
- Banker's
- largelanguagemodels
- upbit
- Aspose.cells
- RadioButton
- chart.js
- AIoptimization
- Kakao API Address
- MYSQL
- 초딩수학
- python
- league of legends
- MS-SQL
- CSV
- 일본여행
- 나만의 상점
- swift 화면전환
- PromptEngineering
- .csv
- Request.Form
- rounding
- Excel
- 업비트
- MSSQL
- 썸머노트
- Android
- 한글깨짐
- 오블완
Archives
- Today
- Total
DBA
[FromBody] JObject settings 완전 정리 – ASP.NET Web API에서 유동적인 JSON 받기 본문
[3] Development/MVC(ASP.NET with C#)
[FromBody] JObject settings 완전 정리 – ASP.NET Web API에서 유동적인 JSON 받기
코볼 2025. 4. 4. 15:03728x90
반응형
SMALL

ASP.NET Web API에서 [FromBody] JObject 사용법과 예제
- [FromBody]는 무엇인가요?
- JObject는 어떤 용도로 쓰일까요?
- ASP.NET Web API에서 동적 JSON 받기
- 모델 클래스 대신 JObject를 써야 할 때
- 사용 시 주의할 점
ASP.NET Web API에서 POST 방식의 요청을 받을 때, 우리는 주로 다음과 같은 방법으로 데이터를 처리합니다:
csharp
public IHttpActionResult Save([FromBody] JObject settings)
처음 보는 분들에게는 [FromBody]와 JObject가 다소 생소하게 느껴질 수 있습니다.
이번 글에서는 ASP.NET Web API에서 유연하게 JSON 데이터를 받기 위한 구조인 [FromBody] JObject의 의미와 활용 방법을 예제를 통해 알아보겠습니다.
🔹 [FromBody]란?
ASP.NET Web API에서 [FromBody]는 클라이언트가 전송한 HTTP 요청의 본문(Body) 에 포함된 JSON 데이터를 해당 파라미터에 직접 매핑하라는 의미입니다.
- POST, PUT 요청에서 주로 사용
- 기본적으로 단순 타입(string, int)은 [FromUri]로 처리되지만,
- 복잡한 타입(JSON)은 [FromBody]를 사용해 Body에서 읽어옵니다
http
POST /api/config/save HTTP/1.1
Content-Type: application/json
{
"timezone": "Asia/Seoul",
"theme": "dark"
}
이 요청을 받는 메서드는 다음과 같습니다:
csharp
public IHttpActionResult Save([FromBody] JObject settings)
🔹 JObject란?
JObject는 Newtonsoft.Json (Json.NET) 라이브러리에서 제공하는 동적 JSON 객체입니다.
모델 클래스를 만들지 않고도 자유롭게 키-값 형태의 JSON 데이터를 다룰 수 있습니다.
- 키에 직접 접근 가능 (settings["theme"])
- .Value<T>() 메서드로 안전한 형 변환 가능
- 유동적 구조를 가진 JSON 처리에 적합
🔸 예제 코드 – 동적 JSON 파라미터 받기
csharp
[HttpPost]
public IHttpActionResult SaveSettings([FromBody] JObject settings)
{
var timezone = settings.Value<string>("timezone");
var theme = settings["theme"]?.ToString();
return Ok(new
{
Result = "Success",
Timezone = timezone,
Theme = theme
});
}
🔸 모델 클래스 vs JObject
상황 | 모델 클래스 사용 | JObject 사용 |
JSON 구조가 명확하고 고정적일 때 | ✅ 추천 | ❌ 불필요 |
JSON 구조가 유동적일 때 (옵션값, 설정 등) | ❌ 불편 | ✅ 유연 |
정적 타입 안전성 필요 | ✅ 컴파일 타임 체크 가능 | ❌ 런타임 오류 가능 |
빠르게 구조 없는 JSON 처리 | ❌ 모델 생성 필요 | ✅ 바로 처리 가능 |
⚠️ 사용 시 주의사항
- Content-Type을 반드시 application/json으로 지정
- 그렇지 않으면 settings는 null로 바인딩됨
- POST/PUT에서만 사용
- GET에서는 [FromBody] 지원되지 않음
- [FromBody]는 단일 파라미터에만 적용 가능
- 여러 개의 [FromBody] 파라미터는 허용되지 않음

구성 요소 | 설명 |
[FromBody] | HTTP Body의 JSON 데이터를 해당 파라미터로 바인딩하라는 지시 |
JObject | 동적으로 JSON 구조를 읽고 쓸 수 있는 객체 (Newtonsoft.Json) |
활용 상황 | 동적 설정, 유동적 구조의 데이터 받을 때 매우 유용 |
ASP.NET Web API에서 [FromBody] JObject는 복잡하고 유동적인 JSON 구조를 처리하기 위한 강력한 도구입니다.
설정 값, 필드가 자주 변경되는 입력, 키-값 옵션 등과 같이 고정된 모델로 표현하기 어려운 경우에 유용하게 사용할 수 있습니다.
하지만 정형화된 데이터라면 여전히 모델 클래스를 사용하는 것이 유지보수에 유리하다는 점도 함께 고려해야겠죠.

728x90
반응형
LIST
Comments