※ C# JSON 변환하는 방법 간략 정리
JSON(JavaScript Object Notation)은 데이터를 쉽게 교환하기 위해 사용되는 양식으로, 속성-값이 쌍 { Name="KWON", Age = 10 } 된 형태다.
객체 데이터를 통신하기 위해서 객체→ JSON, JSON → 객체로 변환하는 과정을 거치게 된다.
- 객체 → JSON 변환 / 직렬화(Serialization)
- JSON → 객체로 변환 / 역직렬화(Deserialization)
[환경 구성]
- Newtonsoft.Json 패키지 설치
- 도구 > NuGet 패키지 관리자 > 솔루션용 NuGet패키지 관리
- 설치 완료 시, Newtonsoft.Json이 추가 된 것을 확인할 수 있다.
[예제]
- 직렬화
- 역직렬화
- 배열 객체 직렬화
- 배열 객체 역직렬화
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace Project3
{
public class JsonTest
{
public string Name { get; set; }
public int Age { get; set; }
}
class Class1
{
public static void Main(string[] args)
{
//1. 직렬화 하기
var testData = new JsonTest { Name="KWON", Age = 10};
var jsonSerialize = JsonConvert.SerializeObject(testData);
Console.WriteLine(jsonSerialize);
Console.WriteLine("------------------------------------------------------------------------");
//2. 역직렬화 하기
var jsonDeserialize = JsonConvert.DeserializeObject<JsonTest>(jsonSerialize);
Console.WriteLine($"{jsonDeserialize.Name}, {jsonDeserialize.Age}");
Console.WriteLine("------------------------------------------------------------------------");
//3. 배열 객체 직렬화하기
var testList = new List<JsonTest>();
testList.Add(new JsonTest { Name = "KIM", Age = 20 });
testList.Add(new JsonTest { Name = "LEE", Age = 25 });
var jsonSerializeList = JsonConvert.SerializeObject(testList);
Console.WriteLine(jsonSerializeList);
Console.WriteLine("------------------------------------------------------------------------");
//4. 배열 객체 역직렬화
var jsonDeserializeList = JsonConvert.DeserializeObject<List<JsonTest>>(jsonSerializeList);
foreach (var json in jsonDeserializeList)
{
Console.WriteLine($"{json.Name}, {json.Age}");
}
}
}
}
[결과]
300x250
'Languague > C#' 카테고리의 다른 글
[C#] Any(), All(), Exists() 사용법 요소 null 체크 (2) | 2024.03.14 |
---|---|
[C#] LINQ First, FirstOfDefault 사용법 첫번째 요소 가져오기 (1) | 2024.03.12 |
[C#] 다른 타입 객체 동적 초기화 하기 (0) | 2023.11.03 |
[C#] .NET MSSql DB 연동, DataReader 데이터 검색 (0) | 2021.06.26 |
[C#] .NET UNit 테스트 방법 (NUnit) (0) | 2021.06.25 |