프로그래밍/C#

[C#] C# JSON 파싱 직렬화/역직렬화(Deserialize/Serialize) 하는 방법

in4obank 2023. 6. 24. 15:34

C# JSON 파싱 직렬화/역직렬화 하는 방법 총정리!!

 

C# to Json,Json to C# 등등 실무에 많이 쓰이는 json 파싱 방법에 대해 알아보겠습니다.!!!

 

 

 

 

 

 


JSON 이란?
  • JavaScript Object Notation라는 의미의 축약어로 데이터를 저장하거나 전송할 때 많이 사용되는 경량의 DATA 교환 형식
  • Javascript에서 객체를 만들 때 사용하는 표현식을 의미
  • JSON 표현식은 사람과 기계 모두 이해하기 쉬우며 용량이 작아서, 최근에는 JSON이 XML을 대체해서 데이터 전송 등에 많이 사용
  • JSON은 데이터 포맷일 뿐이며 어떠한 통신 방법도, 프로그래밍 문법도 아닌 단순한 데이터 표시방법.

JSON 문법
{
  "employees": [
    {
      "name": "Surim",
      "lastName": "Son"
    },
    {
      "name": "Someone",
      "lastName": "Huh"
    },
    {
      "name": "Someone else",
      "lastName": "Kim"
    } 
  ]
}
  • JSON 형식은 자바스크립트 객체와 마찬가지로 key / value가 존재할 수 있으며 key값이나 문자열은 항상 쌍따옴표를 이용하여 표기해야합니다.

 

1. C#  Json 직렬화 역직렬화 방법

 

1. NuGet 설치 - Newtonsoft.JSON

다운로드화면
Nuget 패키지 다운로드 화면

설치 후 using 추가 필수 입니다!!

using Newtonsoft.Json;

 


 

2. 받아오는 Json 형식에 맞는 Class 생성
    public class Employee
    {
        public string name { get; set; }
        public string lastName { get; set; }
    }

    public class Root
    {
        public List<Employee> employees { get; set; }
    }

 

 

테스트로 Json Class 변환 사이트에서 가져왔습니다.

해당 부분이 궁금하시다면 아래의 이전 글 참고바랍니다.!!

https://in4obank.tistory.com/4 

 

[C#] Json Model 클래스 변환 사이트 (json to c#, java to json )등등

안녕하세요 ! 오늘은 실무 또는 테스트에 유용하게 쓰이는 Json Class 변환 사이트에 대해 소개하겠습니다. json 문자열을 c# 클래스로 변환할 뿐만 아니라 여러 기능도 제공하니 유용하게 쓰일거라

in4obank.tistory.com


 

3. JSON 직렬화/역직렬화 (Serialize/DeSerialize) 
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
public class Program
{
	
	public class Employee
	{
		public string name { get; set; }
		public string lastName { get; set; }
	}

	public class Root
	{
		public List<Employee> employees { get; set; }
	}
	public static void Main()
	{
            string jsonString = "{\"employees\":[{\"name\":\"Surim\",\"lastName\":\"Son\"},{\"name\":\"Someone\",\"lastName\":\"Huh\"},{\"name\":\"Someoneelse\",\"lastName\":\"Kim\"}]}";
            Root rt = JsonConvert.DeserializeObject<Root>(jsonString);
        
        
			Console.WriteLine("--역직렬화--");
		
			foreach(Employee e in rt.employees)
			{
				Console.WriteLine(e.name);
				Console.WriteLine(e.lastName);
			}
					
			Console.WriteLine("--직렬화--");
			
			string serializeText = JsonConvert.SerializeObject(rt);

			Console.WriteLine(serializeText);
		
	}
}

4. 실행결과

콘솔창
콘솔창

api사용할때 get 해온 후 이후 과정은 다 비슷하거나 동일 하니 외워 두시면 반드시 유용할거라 생각됩니다. 

 

감사합니다

 

반응형