IT정보공유/C#

c# json 파싱을 클래스 객체화하기 (serialize와 Deserialize)

알지오™ 2019. 12. 23.

요즘 xml 보다 json이 대세인것 같습니다.
몇 년 전만해도 xml도 참 많이 이용했었는데 현재는 거의 압도적으로
json을 많이 사용하고 있습니다.

 

c# json parsing

 

json 문자열을 파싱하는 방법

 

우선은 json 파싱을 할 라이브러리를 준비해야 하는데요.
우리는 가장 많이 사용되고 있는 json parser를 사용할 거에요.

실무에서 엄청 많이 사용되는 Newtonsoft.Json 을 사용하도록 할겁니다.

비주얼스튜디오에서 새로운 프로젝트를 하나 만들고, 프로젝트 -> NuGet 패키지 관리 메뉴로 이동합니다.

 

 

누겟 패키지 관리자에서 찾아보기를 누르고 json을 입력하여 Newtonsoft.json 최신버전을 설치해 주시고요.

 

newtonsoft.json

 

설치가 완료 되었으면 json 파싱을 위한 준비는 끝난거에요.

아래의 설명을 참고하셔서 json 파싱을 해보시기 바랍니다.

 

json 문자열 샘플

 

아래와 같은 json 문자열 샘플이 있습니다.

//JSON FORMAT

{
	"teamname": "My Team",
	"etc": "master group",
	"members": [{
		"name": "Mad Dog",
		"age": 36,
		"job": "Engineer",
		"sex": "male",
	}, {
		"name": "Angry Bird",
		"age": 30,
		"job": "self-employment",
		"sex": "female",
	}]
}

 

name 이라는 항목과 배열로 구성된 members 항목이 있는데, 
우선은 c# 에서 json 구조와 동일하게 클래스를 하나 만들어 주면 됩니다.

메인 클래스 이름은 clTeams 로 정의를 하고
배열형태의 members를 저장하기 위한 클래스는 clMember로 정의를 하도록 하겠습니다.

 

	
    public class clTeams
    {
        public string teamname;         //json 항목명과 동일해야함 (대소문자 구분)
        public string etc;              //json 항목명과 동일해야함 (대소문자 구분)

        public List<clMember> members;  //json 항목명과 동일해야함 (대소문자 구분)
    }

    public class clMember
    {
        public string name;
        public int age;
        public string job;
        public string sex;
    }
	

 

json parsing - JsonConvert.DeserializeObject

json 문자열을 클래스로 바로 파싱을 하려면 JsonConvert 객체의 DeserializeObject 함수를 이용하면 됩니다.

 

string jsontext = "{	\"teamname\": \"My Team\", \"etc\": \"master group\",	\"members\": [{		\"name\": \"Mad Dog\",		\"age\": 36,		\"job\": \"Engineer\",		\"sex\": \"male\",	}, {		\"name\": \"Angry Bird\",		\"age\": 30,		\"job\": \"self-employment\",		\"sex\": \"female\",	}]}";


clTeams Teams; //선언해준 클래스

Teams = JsonConvert.DeserializeObject<clTeams>(jsontext);

 

엄청 간단하죠? json 을 클래스 오브젝트로 파싱을 했으니 반대로 클래스를 json 문자열로 만드는 방법도 알아보도록 하겠습니다.
좀전에 만들어진 Teams 오브젝트를 이용해서 진행합니다.

 

json 변환 - JsonConvert.SerializeObject

클래스를 json 문자열로 변환할때는 JsonConvert의 SerializeObject 를 이용하면 됩니다.

string json = JsonConvert.SerializeObject(Teams, Formatting.None);

 

c# json 파싱과 json 문자열 변환 어렵지 않죠? 도움이 되셨기를 바랍니다.

 

댓글

💲 추천 글