Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# .NET에서 서식이 지정된 JSON 출력하기 – Newtonsoft.Json Formatting 완벽 가이드

C#에서 JSON 데이터를 다룰 때 가장 널리 사용되는 라이브러리인 Newtonsoft.Json은 직렬화 결과물의 서식을 손쉽게 제어할 수 있는 Formatting 옵션을 제공합니다. 이 옵션을 활용하면 사람이 읽기 쉬운 들여쓰기된 JSON 또는 크기를 최소화한 압축 JSON을 상황에 맞게 생성할 수 있습니다.

Formatting 옵션의 종류

None — 별도의 서식을 적용하지 않습니다. 모든 값이 한 줄로 이어져 출력되며, 이것이 기본값입니다. 전송 크기를 줄여야 하는 API 응답 등에 적합합니다.

Indented — 자식 객체를 JsonTextWriter.Indentation(들여쓰기 칸 수) 및 JsonTextWriter.IndentChar(들여쓰기 문자) 설정에 따라 계층 구조로 들여쓰기하여 출력합니다. 로그 확인, 디버깅, 설정 파일 작성처럼 가독성이 중요한 경우에 유용합니다.

예제 1: Formatting.Indented 사용하기

static void Main(string[] args){
    Product product = new Product{
        Name = "Apple",
        Expiry = new DateTime(2008, 12, 28),
        Price = 3.9900M,
        Sizes = new[] { "Small", "Medium", "Large" }
    };
    string json = JsonConvert.SerializeObject(product, Formatting.Indented);
    Console.WriteLine(json);
    Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
    Console.ReadLine();
}
class Product{
    public String[] Sizes { get; set; }
    public decimal Price { get; set; }
    public DateTime Expiry { get; set; }
    public string Name { get; set; }
}

실행 결과

{
    "Sizes": [
        "Small",
        "Medium",
        "Large"
    ],
    "Price": 3.9900,
    "Expiry": "2008-12-28T00:00:00",
    "Name": "Apple"
}

Formatting.Indented를 지정하면 위와 같이 각 속성이 줄바꿈과 들여쓰기와 함께 정렬되어 출력됩니다. 구조가 한눈에 파악되므로 개발 과정에서 결과를 검토할 때 특히 편리합니다.

예제 2: Formatting.None 사용하기

static class Program{
    static void Main(string[] args){
        Product product = new Product{
            Name = "Apple",
            Expiry = new DateTime(2008, 12, 28),
            Price = 3.9900M,
            Sizes = new[] { "Small", "Medium", "Large" }
        };
        string json = JsonConvert.SerializeObject(product, Formatting.None);
        Console.WriteLine(json);
        Product deserializedProduct = JsonConvert.DeserializeObject<Product>(json);
        Console.ReadLine();
    }
}
class Product{
    public String[] Sizes { get; set; }
    public decimal Price { get; set; }
    public DateTime Expiry { get; set; }
    public string Name { get; set; }
}

실행 결과

{"Sizes":["Small","Medium","Large"],"Price":3.9900,"Expiry":"2008-12-28T00:00:00","Name":"Apple"}

Formatting.None(또는 옵션 미지정)을 사용하면 공백과 줄바꿈 없이 한 줄로 압축된 JSON이 생성됩니다. 데이터 크기가 작아지므로 네트워크 전송량이나 저장 공간을 절약해야 하는 운영 환경에 적합합니다.

정리

Newtonsoft.Json의 Formatting 열거형은 단 두 가지 값만으로 JSON 출력 스타일을 완전히 제어할 수 있습니다. 디버깅이나 가독성이 필요하면 Indented, 성능과 용량 최적화가 필요하면 None을 선택하면 됩니다. 두 방식 모두 역직렬화(DeserializeObject<T>) 시 동일하게 동작하므로, 출력 서식만 목적에 맞게 조정하면 됩니다.