C# 앱에서 JsonSerializer 클래스 구현

완료됨

C# 프로그래밍 언어는 네임스페이스를 통해 System.Text.Json JSON 데이터 작업을 기본적으로 지원합니다. 이 네임스페이스에는 JSON 데이터를 직렬화 및 역직렬화하기 위한 클래스와 메서드가 포함되어 있어 C# 개체를 JSON으로 쉽게 변환할 수 있으며 그 반대의 경우도 마찬가지입니다.

serialization이란?

serialization은 개체의 상태(속성 값)를 저장하거나 전송할 수 있는 폼으로 변환하는 프로세스입니다. 직렬화된 양식에는 개체의 연결된 메서드에 대한 정보가 포함되지 않습니다.

C# 애플리케이션의 컨텍스트에서 serialization은 C# 개체를 JSON 문자열로 변환하는 데 사용됩니다. 이는 파일에 데이터를 저장하거나, 네트워크를 통해 데이터를 보내거나, 데이터베이스에 데이터를 저장하는 데 유용합니다. 다음은 그 예입니다.

  • 직렬화는 특히 서로 다른 프로그래밍 언어 또는 플랫폼을 사용하는 경우 서로 다른 시스템 또는 애플리케이션 간의 데이터 교환에 필수적입니다. 이를 통해 다양한 시스템에서 이해할 수 있는 표준화된 형식으로 데이터를 쉽게 공유할 수 있습니다.
  • 직렬화는 웹 API에서도 클라이언트와 서버 간에 데이터를 보내고 받는 데 사용됩니다. 클라이언트가 서버에 요청할 때 서버는 응답 데이터를 JSON 형식으로 직렬화할 수 있으며, 이 형식은 클라이언트가 개체로 다시 역직렬화할 수 있습니다.
  • 직렬화는 애플리케이션 상태 또는 사용자 기본 설정 저장과 같은 데이터 스토리지 시나리오에서 사용됩니다. JSON으로 개체를 직렬화하면 개발자는 데이터를 수동으로 구문 분석하거나 서식을 지정하지 않고도 복잡한 데이터 구조를 쉽게 저장하고 검색할 수 있습니다.
  • 직렬화는 종종 데이터를 직렬화된 형식으로 저장하여 성능을 향상시키고 반복되는 데이터베이스 쿼리 또는 계산의 필요성을 줄이는 캐싱 메커니즘에 사용됩니다.

역직렬화는 JSON 문자열이 C# 개체로 다시 변환되는 serialization의 역방향 프로세스입니다. 역직렬화를 사용하면 개발자가 C# 개체 및 속성을 사용하여 보다 구조화된 방식으로 JSON 데이터를 사용할 수 있습니다. 이는 JSON 응답을 반환하는 API 또는 외부 데이터 원본으로 작업하거나 JSON 파일에 저장된 정보로 작업할 때 특히 유용합니다.

네임스페이 System.Text.Json 스 검사

System.Text.Json 네임스페이스는 JSON 데이터 작업을 위한 .NET의 강력한 라이브러리입니다. serialization(C# 개체를 JSON으로 변환) 및 역직렬화(JSON을 다시 C# 개체로 변환)에 대한 기능을 제공합니다. 이 라이브러리는 빠르고 효율적이며 사용하기 쉽도록 설계되어 C# 애플리케이션에서 JSON을 사용하는 개발자에게 인기 있는 선택입니다.

라이브러리는 System.Text.Json .NET Core 프레임워크의 일부이며 .NET 5 이상 버전에 포함되어 있습니다. 다음을 포함하여 JSON 데이터 작업을 위한 클래스 및 메서드 집합을 제공합니다.

  • JsonSerializer: C# 개체를 JSON으로 변환하는 클래스이고 그 반대의 경우도 마찬가지입니다. JSON 데이터를 직렬화 및 역직렬화하는 방법과 serialization 프로세스를 사용자 지정하는 옵션을 제공합니다.
  • JsonDocument: JSON 데이터를 읽고 구문 분석하는 클래스입니다. 개발자는 C# 개체로 역직렬화할 필요 없이 JSON 구조를 탐색하고 쿼리할 수 있습니다.
  • JsonElement: JSON 값을 나타내는 구조체입니다. JSON 데이터에 액세스하고 조작하는 메서드를 제공하여 개발자가 보다 유연한 방식으로 JSON 구조를 사용할 수 있도록 합니다.

클래스 JsonSerializer 는 네임스페이스의 직렬화 및 역직렬화에 System.Text.Json 사용되는 기본 클래스입니다. C# 개체를 JSON 문자열로 변환하는 메서드를 제공하며 그 반대의 경우도 마찬가지입니다. 따라서 C# 애플리케이션에서 JSON 데이터를 쉽게 사용할 수 있습니다.

JsonSerializer 클래스 검사

이 클래스는 JsonSerializer JSON을 직렬화하고 역직렬화하는 다음 메서드를 제공합니다.

  • Serialize: C# 개체를 JSON 문자열로 변환합니다.
  • Deserialize: JSON 문자열을 다시 C# 개체로 변환합니다.

를 사용하여 개체를 JSON으로 직렬화 JsonSerializer.Serialize

JsonSerializer.Serialize 메서드는 개체를 JSON 문자열 표현으로 변환하는 데 사용됩니다. 이는 파일에 데이터를 저장하거나, 네트워크를 통해 데이터를 보내거나, 데이터베이스에 데이터를 저장하는 데 유용합니다. 메서드는 Serialize 개체를 입력으로 사용하고 JSON 문자열을 반환합니다.

다음 코드에서는 다음을 사용하여 JsonSerializer.Serialize개체를 JSON 문자열로 변환하는 방법을 보여 줍니다.


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public string Address { get; set; }
}

class Program
{
    static void Main()
    {
        var customer = new Employee { Name = "Anette Thomsen", Age = 30, Address = "123 Main St" };
        string jsonString = JsonSerializer.Serialize(customer);
        Console.WriteLine(jsonString);
    }
}

// Output: {"Name":"Anette Thomsen","Age":30,"Address":"123 Main St"}

이 코드는 , Employee및 에 대한 속성을 사용하여 간단한 Name 클래스를 Age정의합니다Address. 이 JsonSerializer.Serialize 메서드는 클래스의 Employee 인스턴스를 JSON 문자열로 변환하는 데 사용됩니다. 출력은 쉽게 저장하거나 전송할 수 있는 개체의 JSON 표현입니다.

를 사용하여 JSON을 개체로 역직렬화 JsonSerializer.Deserialize

JsonSerializer.Deserialize 메서드는 JSON 문자열을 다시 C# 개체로 변환하는 데 사용됩니다. 역직렬화는 파일에서 데이터를 읽거나, API에서 데이터를 받거나, 일반적으로 JSON 데이터를 처리하는 데 유용합니다. 이 메서드는 Deserialize JSON 문자열 및 입력으로 만들 개체의 형식을 사용하고 해당 개체의 인스턴스를 반환합니다.

다음 코드에서는 다음을 사용하여 JsonSerializer.DeserializeJSON 문자열을 개체로 다시 변환하는 방법을 보여 줍니다.


using System;
using System.Text.Json;
using System.Text.Json.Serialization;

public class Employee
{
    public string Name { get; set; } = "Anette Thomsen";
    public int Age { get; set; }
    public string Address { get; set; } = "123 Main St";
}

class Program
{
    static void Main()
    {
        string jsonString1 = "{\"Name\":\"Anette Thomsen\",\"Age\":30,\"Address\":\"123 Main St\"}";
        string jsonString2 = @"{""Name"":""Anette Thomsen"",""Age"":30,""Address"":""123 Main St""}";
        var customer = JsonSerializer.Deserialize<Employee>(jsonString2);
        if (customer != null)
        {
            Console.WriteLine($"Name: {customer.Name}, Age: {customer.Age}, Address: {customer.Address}");
        }
        else
        {
            Console.WriteLine("Deserialization failed.");
        }
    }
}

// Output: Name: Anette Thomsen, Age: 30, Address: 123 Main St

이 코드는 개체를 나타내는 JSON 문자열을 Employee 정의합니다. 이 JsonSerializer.Deserialize 메서드는 JSON 문자열을 클래스의 인스턴스로 다시 변환하는 Employee 데 사용됩니다. 이 메서드는 JsonSerializer.Deserialize 제네릭이므로 JSON 문자열이 나타낼 개체의 형식을 지정할 수 있습니다.

이 경우 메서드가 JSON 데이터를 기반으로 클래스의 Employee 인스턴스를 만들 수 있도록 형식 매개 변수로 지정 Employee 합니다. 메서드는 Deserialize 클래스의 인스턴스를 반환합니다 Employee . 역직렬화된 개체의 속성은 예제와 같이 직접 액세스할 수 있습니다. 역직렬화가 실패하는 경우(예: JSON 문자열이 잘못되었거나 예상된 구조와 일치하지 않는 경우) 메서드는 null을 반환하고 그에 따라 해당 사례를 처리할 수 있습니다.

JSON 문자열을 수동으로 생성하려면 이스케이프 문자 또는 축자 문자열 리터럴이 필요합니다. 문자열 앞의 기호는 @ 축자 문자열 리터럴임을 나타냅니다. 축자 문자열 리터럴을 사용하면 읽기 쉬운 서식을 사용할 수 있습니다.

요약

이 단원에서는 네임스페이스를 사용하여 C#에서 JSON 데이터를 사용하는 System.Text.Json 방법을 알아보았습니다. C# 개체를 JSON 문자열로 변환하고 그 반대로 변환할 수 있는 직렬화 및 역직렬화 개념을 살펴보했습니다. 또한 JSON 데이터를 직렬화하고 역직렬화하는 메서드를 제공하는 클래스를 검사 JsonSerializer 했습니다. C# 애플리케이션에서 JSON 데이터를 쉽게 사용할 수 있도록 개체를 JSON으로 변환하는 방법 및 Serialize 메서드를 사용하는 Deserialize 방법의 예를 보았습니다. 이러한 개념을 이해하는 것은 최신 소프트웨어 개발에서 API, 데이터 스토리지 및 데이터 교환을 사용하는 데 필수적입니다.