Home Full Site
JSON String Beautifier

JSON String을 화면에 표시할 때, 라인 및 들여쓰기를 제대로 하지 않으면 읽기 어려운 경우가 있다. 예를 들어, 웹서비스 등의 외부 소스로부터 JSON String을 전달 받은 경우, 일반적으로 포맷팅이 잘 되어 있지 않은데, 이때 간단한 포맷팅 기능을 추가해서 화면에 출력하는 것이 좋다. (JSON 데이타를 이렇게 직접 출력하는 것은 디버깅에서 많이 사용된다)

JSON Beautifier는 여러가지 방식으로 구현할 수 있지만, 여기서는 JSON.NET에 내장된 포맷팅 기능을 이용해서 간단히 구현해 본다.

먼저 JsonConvert.SerializeObject() 메서드를 사용하는 방법이 있는데, SerializeObject()의 두번째 파라미터로 Formatting.Indented 옵션을 주면 자동으로 라인/들여쓰기된 문자열을 리턴해 준다 (아래 예제 방법1).

또 다른 방법으로 JToken.ToString()을 실행하는 방법으로 JToken을 얻기 위해 JValue.Parse()를 실행한다. 즉, JValue.Parse(json).ToString(Formatting.Indented)과 같은 방식으로 호출하면 되는데, 이 방식이 전자보다 좀 더 간단한 방식이다 (아래 예제 방법2).


예제

using System;
using System.Windows.Forms;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;  // JValue

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // 테스트용 JSON string 만들기
            var p = new { Id = 1, Name = "Alex", Address = new { City = "Redmond", State = "WA", Zip = "98052" } };
            string jsonString = JsonConvert.SerializeObject(p);
            txtOriginal.Text = jsonString;
        }

        private void btnBeautifier_Click(object sender, EventArgs e)
        {
            // JSON string을 보기 좋게 만듦
            string jsonString = txtOriginal.Text;
            txtBeautified.Text = Beautify(jsonString);
        }

        // 방법2: JToken.ToString()을 이용하는 방법
        private string Beautify(string jsonString)
        {            
            string beautifiedJson = JValue.Parse(jsonString).ToString(Formatting.Indented);
            return beautifiedJson;
        }
        
        // 방법1: SerializeObject() Formatting을 이용하는 방법
        private string Beautify_AnotherWay(string jsonString)
        {
            dynamic json = JsonConvert.DeserializeObject(jsonString);
            return JsonConvert.SerializeObject(json, Formatting.Indented);
        }
    }
}


JSON Beautifier 실행


© csharpstudy.com