개발 노트

SERIALIZE DESERIALIZE 본문

프로그래밍/C#

SERIALIZE DESERIALIZE

알 수 없는 사용자 2022. 3. 14. 10:57

json string beautifier

 

json string을 화면에 표시할 때, 라인 및 들여쓰기를 제대로 하지 않으면 읽기 어려운 경우가 있다

예를 들어 웹서비스 등의 외부 소스로부터 JSON String을 전달 받은 경우,

일반적으로 포맷팅이 잘 되어 있지 않은데 이때 간단한 포맷팅 기능을 추가해서 화면에 출력하는 것이 좋다

(JSON 데이터를 이렇게 직접 출력하는 것은 디버깅에서 많이사용된다

 

JSON BEAUTIFIER는 여러 가지 방식으로 구현할 수 있지만

여기서는 JSON.NET에 내장된 포맷팅 기능을 이용해서 간단히 구현해본다

 

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

 

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

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

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

		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;
		}

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

 

JSON(JavaScript Object Notation) 데이터 직렬화 및 역직렬화

- 직렬화(Serialize): C# 개체를 JSON 문자열로 변환

- 역직렬화(Deserialize): JSON 문자열을 C# 개체로 변환

 

JSON.NET