JSON to C# Class : 단순한 가이드

이글에서는 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 로 붙여 넣기 기능이 있습니다. 아주 유용한 기능이며 소스도 아주 깔끔하게 붙여넣기가 됩니다.

  1. 위의 Json 코드를 Ctrl+C 로 복사를 합니다.
  2. Visual Studio 의 “편집->선택하여 붙여넣기->Json 을 클래스로 붙여넣기” 메뉴로 아주 쉽게 Class로 만들 수 있습니다.
JSON to C# 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 로 아주 간단히 만들수 있습니다.

JSON to 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# 언어에서의 활용성을 높일 수 있습니다.
그 과정을 아주 쉽게 할 수 있는 두가지 방법을 소개해 드렸습니다.

Leave a Comment