이글에서는 Json String 으로 C# Class 를 만드는 아주 간단한 방법(JSON to C# Class)을 소개 해 드립니다.
어떤 이미정해진 Json 규격이 존재 할때 Deserialize 가 필요한 경우가 있습니다. 이때 Class 를 일일히 보고 만드는 일은 여간 힘든일이 아닙니다. 이때 자동을 생성 할 수 있는 방법을 소개 해 드립니다.
예제 Json String 은 다음과 같습니다.
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm":
"Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
Visual Studio 기본 기능으로 만들기
Visual Studio 에는 Json 을 Class 로 붙여 넣기 기능이 있습니다. 아주 유용한 기능이며 소스도 아주 깔끔하게 붙여넣기가 됩니다.
- 위의 Json 코드를 Ctrl+C 로 복사를 합니다.
- Visual Studio 의 “편집->선택하여 붙여넣기->Json 을 클래스로 붙여넣기” 메뉴로 아주 쉽게 Class로 만들 수 있습니다.
위의 메뉴를 선택해 주면 열려 있는 파일에 Class 로 붙여 넣기가 됩니다.
붙여진 클래스는 다음과 같습니다.
public class Rootobject
{
public Glossary glossary { get; set; }
}
public class Glossary
{
public string title { get; set; }
public Glossdiv GlossDiv { get; set; }
}
public class Glossdiv
{
public string title { get; set; }
public Glosslist GlossList { get; set; }
}
public class Glosslist
{
public Glossentry GlossEntry { get; set; }
}
public class Glossentry
{
public string ID { get; set; }
public string SortAs { get; set; }
public string GlossTerm { get; set; }
public string Acronym { get; set; }
public string Abbrev { get; set; }
public Glossdef GlossDef { get; set; }
public string GlossSee { get; set; }
}
public class Glossdef
{
public string para { get; set; }
public string[] GlossSeeAlso { get; set; }
}
어떤가요? 아주 쉽게 Class로 만들어졌죠.
Visual Studio에 이렇게 좋은 기능이 있었습니다.
온라인 컨버터를 활용
Convert JSON to C# Classes Online – Json2CSharp Toolkit
위의 링크를 따라가면 Json 을 C# Class 로 아주 간단히 만들수 있습니다.
만들어진 클래스를 보겠습니다.
/* Root myDeserializedClass
= JsonConvert.DeserializeObject<Root>(myJsonResponse);*/
public class Glossary
{
public string title { get; set; }
public GlossDiv GlossDiv { get; set; }
}
public class GlossDef
{
public string para { get; set; }
public List<string> GlossSeeAlso { get; set; }
}
public class GlossDiv
{
public string title { get; set; }
public GlossList GlossList { get; set; }
}
public class GlossEntry
{
public string ID { get; set; }
public string SortAs { get; set; }
public string GlossTerm { get; set; }
public string Acronym { get; set; }
public string Abbrev { get; set; }
public GlossDef GlossDef { get; set; }
public string GlossSee { get; set; }
}
public class GlossList
{
public GlossEntry GlossEntry { get; set; }
}
public class Root
{
public Glossary glossary { get; set; }
}
온라인 툴도 완벽하게 변환이 되었습니다.
이제 쉽게 Json String 을 Deserialize 하면 될것 같습니다.
위의 온라인 예제에서는 다음처럼 Deserialize 방법도 보여주네요
Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
결론
JSON 데이터를 C# 클래스로 변환하는 작업은 데이터 처리를 더욱 효율적으로 할 수 있게 해주는 중요한 과정입니다. 이를 통해 데이터를 쉽게 다룰 수 있으며, C# 언어에서의 활용성을 높일 수 있습니다.
그 과정을 아주 쉽게 할 수 있는 두가지 방법을 소개해 드렸습니다.