[C# 문법] C# JSON 데이터 Serialize, DeSerialize 하기

목적

  • C# 에서 Class 객체를 생성 후, 해당 데이터를 JSON 데이터로 Serialize 하고, 또 반대로 DeSerialzie 하도록 하는 방법에 대해서 예제 코드를 작성해 보도록 하겠습니다.
  • C# 에서 JSON 다루는 패키지는 여러가지가 있지만, 여기서는 Newtonsoft.Json NuGet Package 를 이용하여 프로그램 구현 하였습니다.

누겟 패키지 설치

  • 다음과 같이 Newtonsoft.Json 누겟 패키지를 Visual Studio 에서 설치 진행 하였습니다.


예제 코드

  • 그럼 간단히 예제 코드를 작성하여, Json 데이터 Serialize, DeSerialize 하는 방법에 대해서 알아 보겠습니다.
using JsonTest;
using Newtonsoft.Json;

var list = new List<Defect>()
{
    new Defect() {DefectId = 1, ImageName = "1.jpg", OriginClassNo = "101"},
    new Defect() {DefectId = 2, ImageName = "2.jpg", OriginClassNo = "102"},
    new Defect() {DefectId = 3, ImageName = "3.jpg", OriginClassNo = "103"},
    new Defect() {DefectId = 4, ImageName = "4.jpg", OriginClassNo = "104"},
    new Defect() {DefectId = 5, ImageName = "5.jpg", OriginClassNo = "105"},
};

var waferList = new List<Wafer>()
{
     new Wafer()
    {
        SlotNo = 1,
        Defects = list
    },
     new Wafer()
     {
         SlotNo = 2,
         Defects = list
     }
};

// Json Serialize
string jsonString = JsonConvert.SerializeObject(waferList, Formatting.Indented);

// Json DeSerialize
var pObj = JsonConvert.DeserializeObject<List<Wafer>>(jsonString);

public class Wafer
{
    public int SlotNo { get; set; }
    public List<Defect> Defects { get; set; } = null!;
}

public class Defect
{
    public int DefectId { get; set; }
    public string ImageName { get; set; } = null!;
    public string OriginClassNo { get; set; } = null!;
}

실행 결과

  • 실행 결과, 다음과 같이 Serialize, DeSerialize 가 정상적으로 된 것을 확인할 수 있습니다.
[
  {
    "SlotNo": 1,
    "Defects": [
      {
        "DefectId": 1,
        "ImageName": "1.jpg",
        "OriginClassNo": "101"
      },
      {
        "DefectId": 2,
        "ImageName": "2.jpg",
        "OriginClassNo": "102"
      },
      {
        "DefectId": 3,
        "ImageName": "3.jpg",
        "OriginClassNo": "103"
      },
      {
        "DefectId": 4,
        "ImageName": "4.jpg",
        "OriginClassNo": "104"
      },
      {
        "DefectId": 5,
        "ImageName": "5.jpg",
        "OriginClassNo": "105"
      }
    ]
  },
  {
    "SlotNo": 2,
    "Defects": [
      {
        "DefectId": 1,
        "ImageName": "1.jpg",
        "OriginClassNo": "101"
      },
      {
        "DefectId": 2,
        "ImageName": "2.jpg",
        "OriginClassNo": "102"
      },
      {
        "DefectId": 3,
        "ImageName": "3.jpg",
        "OriginClassNo": "103"
      },
      {
        "DefectId": 4,
        "ImageName": "4.jpg",
        "OriginClassNo": "104"
      },
      {
        "DefectId": 5,
        "ImageName": "5.jpg",
        "OriginClassNo": "105"
      }
    ]
  }
]
1
2
728x90

이 글을 공유하기

댓글

Designed by JB FACTORY