반응형
Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발꿈나무

[C# 교과서] 36. C# 확장 기능(11) - XML과 JSON 본문

C# 기초

[C# 교과서] 36. C# 확장 기능(11) - XML과 JSON

HYOKYE0NG 2022. 1. 26. 15:38
반응형
XML과 JSON

 

XElement 클래스를 사용하여 XML 요소를 생성하거나 가공하기

XElement 클래스는 XML 요소를 생성하거나 담을 수 있는 그릇이다.

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

class XElementDemo
{
    static void Main()
    {
        //[1] XML 요소 생성
        XElement category = new XElement("Menus",
            new XElement("Menu", "책"),
            new XElement("Menu", "강의"),
            new XElement("Menu", "컴퓨터")
        );
        Console.WriteLine(category);

        //[2] XML 요소 가공
        XElement newCategory = new XElement("Menus",
            from node in category.Elements()
            where node.Value.ToString().Length >= 2
            select node
        );
        Console.WriteLine(newCategory);
    }
}

/*
<Menus>
	<Menu>책</Menu>
    <Menu>강의</Menu>
    <Menu>컴퓨터</Menu>
</Menus>
<Menus>
	<Menu>강의</Menu>
    <Menu>컴퓨터</Menu>
</Menus>
*/

XElement 클래스를 사용하여 XML 데이터를 만들고, XML 데이터에 LINQ를 사용하여 XML 요소를 가공한다.

 

 

JSON 데이터 직렬화 및 역직렬화하기

JSON(Javascript Object Notation) 데이터는 최근 프로그래밍에서 많이 사용하는 데이터 구조로 C# 개체를 JSON 문자열로 변환하는 내용을 직렬화(serialize)라고 하며, 그 반대로 JSON 문자열을 C# 개체로 변환하는 것을 역직렬화(deserialize)라고 한다.

  • 직렬화: C# 개체를 JSON 데이터로 변환
  • 역직렬화: JSON 데이터를 C# 개체로 변환

 

이러한 JSON 직렬화 및 역직렬화를 편리하게 사용할 수 있는 API는 JSON.NET 이름의 다음 URL에 있는 NuGet 패키지를 활용하면 편리하다.

https://www.nuget.org/packages/Newtonsoft.Json/ 

 

Newtonsoft.Json 13.0.1

Json.NET is a popular high-performance JSON framework for .NET

www.nuget.org

 

 

JSON 데이터 다루기

using Newtonsoft.Json; //NuGet Package
using System;
using System.Collections.Generic;

public class Shirt
{
    public string Name { get; set; }
    public DateTime Created { get; set; }
    public List<string> Sizes { get; set; }
}

public class JsonConvertDemo
{
    static void Main()
    {
        //[1] 직렬화(Serialize) 데모
        Shirt shirt1 = new Shirt
        {
            Name = "Red Shirt",
            Created = new DateTime(2020, 01, 01),
            Sizes = new List<string> { "Small" }
        };
        string json1 = JsonConvert.SerializeObject(shirt1, Formatting.Indented);
        Console.WriteLine(json1);

        //[2] 역직렬화(Deserialize) 데모
        string json2 = @"{
            'Name': 'Black Shirt',
            'Created': '2020-12-31T00:00:00',
            'Sizes': ['Large']
        }";
        Shirt shirt2 = JsonConvert.DeserializeObject<Shirt>(json2);
        Console.WriteLine($"{shirt2.Name} - {shirt2.Created}");
    }
}

SerializeObject() 메서드를 통해 C# 개체를 JSON 데이터로 변환하는 직렬화 작업을 수행하고,

DeserializeObject() 메서드를 통해 Json 개체를 C# 데이터로 변환하는 역직렬화 작업을 수행한다.

 

 

 

 

 

<Reference>

 

반응형
Comments