c# JSON, XML 데이터 처리

2024. 9. 20. 20:43c#

C#에서 JSON, XML 데이터 처리

현대 애플리케이션에서 데이터를 저장하고 교환할 때 자주 사용하는 두 가지 대표적인 형식이 JSONXML입니다.
C#에서는 JSON과 XML 데이터를 쉽게 처리할 수 있는 다양한 방법을 제공합니다.
이번 포스팅에서는 C#에서 JSON 및 XML 데이터를 처리하는 방법을 살펴보겠습니다.


1. JSON 데이터 처리

JSON(자바스크립트 객체 표기법)은 데이터를 표현하는 가볍고 간단한 형식으로, 많은 웹 API와 애플리케이션에서 사용됩니다. C#에서는 Newtonsoft.Json 라이브러리 또는 .NET 내장 System.Text.Json 네임스페이스를 사용하여 JSON 데이터를 처리할 수 있습니다.

1.1. Newtonsoft.Json을 사용한 JSON 처리

Newtonsoft.Json은 C#에서 가장 널리 사용되는 JSON 처리 라이브러리입니다.

JSON 직렬화(객체 -> JSON)

using Newtonsoft.Json;

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { Name = "Alice", Age = 30 };

        // 객체를 JSON 문자열로 변환
        string json = JsonConvert.SerializeObject(person);
        Console.WriteLine(json);
    }
}

위 예제는 Person 객체를 JSON 문자열로 변환(직렬화)하는 코드입니다. 출력은 다음과 같습니다:

{"Name":"Alice","Age":30}

JSON 역직렬화(JSON -> 객체)

using Newtonsoft.Json;

class Program
{
    static void Main(string[] args)
    {
        string json = "{\"Name\":\"Alice\",\"Age\":30}";

        // JSON 문자열을 객체로 변환(역직렬화)
        Person person = JsonConvert.DeserializeObject<Person>(json);
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}

위 코드는 JSON 문자열을 C# 객체로 변환하는 예시입니다.


1.2. System.Text.Json을 사용한 JSON 처리

.NET Core 3.0 이상에서는 System.Text.Json 네임스페이스를 통해 내장된 JSON 처리 도구를 사용할 수 있습니다.

JSON 직렬화

using System.Text.Json;

class Program
{
    static void Main(string[] args)
    {
        Person person = new Person { Name = "Bob", Age = 25 };

        // 객체를 JSON 문자열로 변환
        string json = JsonSerializer.Serialize(person);
        Console.WriteLine(json);
    }
}

JSON 역직렬화

using System.Text.Json;

class Program
{
    static void Main(string[] args)
    {
        string json = "{\"Name\":\"Bob\",\"Age\":25}";

        // JSON 문자열을 객체로 변환
        Person person = JsonSerializer.Deserialize<Person>(json);
        Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
    }
}

2. XML 데이터 처리

XML(확장 마크업 언어)은 데이터 교환 및 저장에 많이 사용되는 형식입니다.
C#에서는 System.Xml 네임스페이스를 사용하여 XML을 처리할 수 있으며, XmlDocument 또는 XDocument 클래스를 활용할 수 있습니다.

2.1. XmlDocument를 사용한 XML 처리

XML 생성

using System;
using System.Xml;

class Program
{
    static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();

        // 루트 요소 생성
        XmlElement root = doc.CreateElement("Person");
        doc.AppendChild(root);

        // 하위 요소 생성
        XmlElement name = doc.CreateElement("Name");
        name.InnerText = "Charlie";
        root.AppendChild(name);

        XmlElement age = doc.CreateElement("Age");
        age.InnerText = "40";
        root.AppendChild(age);

        // XML 출력
        doc.Save(Console.Out);
    }
}

위 코드는 Person XML 문서를 생성하여 출력하는 예시입니다.

XML 읽기

using System;
using System.Xml;

class Program
{
    static void Main(string[] args)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load("person.xml");

        XmlNodeList nameNodes = doc.GetElementsByTagName("Name");
        foreach (XmlNode node in nameNodes)
        {
            Console.WriteLine("Name: " + node.InnerText);
        }

        XmlNodeList ageNodes = doc.GetElementsByTagName("Age");
        foreach (XmlNode node in ageNodes)
        {
            Console.WriteLine("Age: " + node.InnerText);
        }
    }
}

위 코드는 XML 파일에서 Name과 Age 요소를 읽어오는 예시입니다.

2.2. XDocument를 사용한 XML 처리

XDocument 클래스는 XML을 LINQ 형식으로 처리할 수 있게 도와줍니다.
이는 XML을 더 직관적이고 편리하게 다룰 수 있게 해줍니다.

XML 생성

using System;
using System.Xml.Linq;

class Program
{
    static void Main(string[] args)
    {
        XDocument doc = new XDocument(
            new XElement("Person",
                new XElement("Name", "David"),
                new XElement("Age", 35)
            )
        );

        // XML 출력
        Console.WriteLine(doc);
    }
}

XML 읽기

using System;
using System.Linq;
using System.Xml.Linq;

class Program
{
    static void Main(string[] args)
    {
        XDocument doc = XDocument.Load("person.xml");

        var name = doc.Descendants("Name").First().Value;
        var age = doc.Descendants("Age").First().Value;

        Console.WriteLine($"Name: {name}, Age: {age}");
    }
}

3. JSON vs XML: 언제 사용해야 할까?

JSON:

  • 경량 데이터 형식
  • 주로 웹 API, 모바일 앱과 같은 응용 프로그램에서 사용
  • 간단한 데이터 구조 처리에 적합

XML:

  • 복잡한 데이터 구조와 메타데이터를 표현 가능
  • 문서 중심의 데이터 처리에 유리
  • 많은 기존 시스템과의 호환성 보장

 

C#에서 JSON과 XML 데이터를 처리하는 방법은 각각의 라이브러리와 클래스에 따라 다릅니다.
Newtonsoft.JsonSystem.Text.Json을 통해 JSON을 손쉽게 처리할 수 있으며, XmlDocumentXDocument를 사용해 XML 데이터를 생성하고 읽어올 수 있습니다.
데이터의 형태와 요구 사항에 맞는 형식을 선택하여 효과적으로 데이터를 처리할 수 있습니다.