.NET 5부터는 JSON을 해석하는 API가 기본적으로 제공되는 듯 하지만, 아직도 내 PC에는 .NET 5가 기본적으로 설치되어 있지 않으므로 다른 방안이 필요했고 Newtonsoft.Json이라는 매우 뛰어난 JSON 라이브러리가 있어 이를 사용하게 되었습니다.
설치는 간단이 Visual Studio의 Package Manager 기능을 통해 설치할 수 있으며 NuGet 사이트에서 제공하는 정보를 통해 쉽게 설치할 수 있습니다.
이제 다음과 같은 JSON을 해석해 봅시다. 이 JSON은 test.json이라는 파일이 저장되어 있습니다.
{ "form0": { "metadata": { "title": "테스트" } }, "form1": { "metadata": { "title": "연락처" } } }
위에서 form0과 form1에 대한 정보를 얻어와야 하고, 각가게 대한 title 값을 얻어와야 합니다. 코드는 아래와 같습니다.
using Newtonsoft.Json; using Newtonsoft.Json.Linq; ... var strFormJson = Utility.ReadAllTextFromFile("test.json"); var jsonForm = JObject.Parse(strFormJson); var iter = jsonForm.GetEnumerator(); while(iter.MoveNext()) { var keyValue = iter.Current; MessageBox.Show(keyValue.Key + " " + keyValue.Value["metadata"]["title"].ToString()); }
JSON에 대해 배열에 대한 처리는 JArray로 타입을 변환하면 됩니다. 코드의 예는 다음과 같습니다.
var jsonLayers = JObject.Parse(strLayersJson); var arrayJsonLayers = jsonLayers["layers"] as JArray; var iterLayers = arrayJsonLayers.GetEnumerator(); while(iterLayers.MoveNext()) { var value = iterLayers.Current; var layerName = value["name"].ToString(); ... }
시간이 좀더 흘려 .NET 5가 사용자의 PC에 기본적으로 설치되는 날이 오면 .NET 5에서 제공하는 JSON API를 사용하시기 바랍니다.