1. Newtonsoft.Json 소개
Newtonsoft.Json(흔히 Json.NET이라고 부릅니다)은 .NET 생태계 오픈소스 JSON 직렬화/역직렬화 라이브러리입니다
- 2006년 첫 버전 Json.NET 1.0.1이 출시되었으며 현재 주 버전은 10 이상입니다
- 초기 .NET 2.0을 지원했고 거의 모든 .NET 프레임워크(Framework/.NET Core/.NET 5+)와 호환됩니다
- 어셈블리:
Newtonsoft.Json.dll,NuGet으로 설치해 사용합니다 - 초기 소스코드는 CodePlex에 호스팅되었으며 현재 GitHub로 이전했고 많은 기업 프로젝트에서 활용 중입니다
2. JSON이란 무엇인가
JSON(JavaScript Object Notation)
- 가볍고 언어 중립적인 데이터 교환 텍스트 형식으로 JavaScript 전용이 아닙니다
- 핵심 구조:키‑값 쌍
key:value;객체{},배열[]중첩을 지원
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Code language: C# (cs)
Ⅱ. 엔티티 클래스 정의(JSON 구조와 매칭)
Person.cs(학생 객체)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Code language: C# (cs)
WebInfo.cs(루트 객체)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Code language: C# (cs)
예시‑객체를 JSON으로 직렬화
protected void Page_Load(object sender, EventArgs e)
{
// 1. 엔티티 인스턴스 생성 후 값 할당
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Newtonsoft.Json 저수준 코드:JsonWriter로 직렬화 수행
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Code language: C# (cs)
실무에서 자주 쓰이는 간략 코드
Newtonsoft.Json은 정적 유틸리티 메서드를 제공하므로 JsonWriter를 직접 만들 필요가 없습니다:
// 한 줄로 직렬화, 개발 현장에서 가장 많이 사용
string json = JsonConvert.SerializeObject(webInfo);Code language: C# (cs)
출력 JSON 결과
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Code language: C# (cs)
기타
- System.Text.Json:.NET Core 3.0부터 마이크로소프트 기본 제공 JSON 라이브러리;구 .NET Framework 프로젝트는 여전히 Newtonsoft.Json을 많이 사용합니다
- 기능:속성 별칭, 필드 무시, 날짜 포맷팅, 순환 참조 처리 등 고급 기능 지원
소개
Next: 직렬화와 역직렬화