개발꿈나무
[C# 교과서] 36. C# 확장 기능(11) - XML과 JSON 본문
반응형
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>
반응형
'C# 기초' 카테고리의 다른 글
[C# 교과서] 38. C# 확장 기능(13) - 함수와 함수형 프로그래밍 (0) | 2022.01.27 |
---|---|
[C# 교과서] 37. C# 확장 기능(12) - 네트워크 프로그래밍 (0) | 2022.01.27 |
[C# 교과서] 35. C# 확장 기능(10) - 스트림과 파일 입출력 (0) | 2022.01.26 |
[C# 교과서] 34. C# 확장 기능(9) - 인메모리 데이터베이스 프로그래밍 (0) | 2022.01.26 |
[C# 교과서] 33. C# 확장 기능(8) - 비동기 프로그래밍 (0) | 2022.01.26 |
Comments