-
[C#] System.Text.Json을 이용한 Json 데이터 탐색C# 2022. 8. 26. 17:28728x90
안녕하세요.
오늘은 .Net5에서부터 나온건지는 확실하지 않지만 기존의 JParser가 아닌 System.Text.Json을 이용해
Json데이터를 파싱해 보고자 합니다.
내장돼 있는 Json파싱이라는거에 의미가 있는듯 합니다.
간단하게 Json데이터와 Array로 구성된 Json파일에 대해 알아보겠습니다.
먼저 using을 통해 System.Text.Json을 선언 후 간단한 데이터를 Json화 시켜보겠습니다.
탐색에 대해서만 알아볼 예정이니 참고 부탁드립니다.
1. String to Json
아마 웹으로 통신하면 대부분 데이터를 Json형식으로 받으실듯합니다.
그럼 string 형식으로 올때가 있습니다. 이럴때 string형식을 Json형태로 변환해 사용하기 쉽게 해보겠습니다.
먼저 데이터를 간단한게 string 형태로 만들어주겠습니다.
string jsonData = "{\"name\":\"hong gil dong\",\"age\":\"105\",\"address\":\"Seoul\",\"hobby\":\"soccer\"}";
Json Parser Online으로 보면 이런 구조입니다.
이제 JsonDocument를 선언해 파싱해보겠습니다.
사용방법은 간단합니다.
JsonDocument.Parse(데이터)이렇게 진행해 주시면 됩니다.
JsonDocument testJson = JsonDocument.Parse(jsonData);
이렇게 JsonDocument 형식으로 변환합니다.
변환을했으면 이제 속성별로 값을 뽑아야겠죠?
뽑는방법은 대체적으로 JsonDocument일 경우는 JsonDocument.RootElement.GetProperty("속성명") 입니다.
위와같은 경우에 속성은 name, age, address, hobby가 되겠네요.
Console.WriteLine(testJson.RootElement.GetProperty("name")); Console.WriteLine(testJson.RootElement.GetProperty("age")); Console.WriteLine(testJson.RootElement.GetProperty("address")); Console.WriteLine(testJson.RootElement.GetProperty("hobby"));
이렇게 잘뽑혔나 결과를 확인해 보겠습니다.
결과가 나오는걸 확인 하실 수 있습니다.
2. String to JsonArray
다음은 json배열형식에 대해 탐색해보고자 합니다.
이번에는 JsonDocument가 아닌 JsonElement.ArrayEnumerator를 사용하겠습니다.
데이터를 선언해주겠습니다. 아까와 같은 데이터를 Json Array 형식으로 간단하게 만들었습니다.
이런구조다~라는걸 확인해 주시면 되겠습니다.
이제 이런 구조의 string형식을 Json Array형식으로 파싱해주겠습니다.
JsonElement.ArrayEnumerator testJsonList = JsonDocument.Parse(jsonDataList).RootElement.EnumerateArray();
짜잔~ 이렇게 앞에 방법과 같이 JsonDocument.Parse를 통해 변환하고 RootElement.EnumrateArray();를 붙여주시면 되겠습니다.
그렇다면 탐색은 어떻게 할까요?
Array이니 반복문 foreach를 이용해보겠습니다.
string[]에서는 foreach문에 string을 통해 요소 하나씩을 찾듯
JsonElement.ArrayEnumerator는 JsonElement를 이용해 탐색하겠습니다.
foreach(JsonElement testJsonElement in testJsonList) { Console.WriteLine(testJsonElement.GetProperty("name")); Console.WriteLine(testJsonElement.GetProperty("hobby")); }
여기서 foreach부분도 확인해주시고 또하나 앞에서는 RootEelement.GetPropery를 진행했지만 JsonElement에서는 바로 GetProperty를 사용한다는걸 확인해 주시면 되겠습니다.
결과를 볼까요?
이렇게 하며 간단한 Json탐색에 대해 알아보며 마무리하겠습니다.
조금씩 가을이오네요.
다들 항상 건강하시길 바랍니다. :D
'C#' 카테고리의 다른 글
[C#] Process실행시 Unhandled exception. System.ComponentModel.Win32Exception 관련 오류 (2) 2023.01.05 [C#] Obslete란? (0) 2022.09.20 [C#] string.Format사용시 입력 문자열의 형식이 잘못되었습니다. 관련 오류 (0) 2022.08.11 [C#] double형 시간변환 관련 (0) 2022.06.22 [C#] Delegate에 대한 공부(3) Delegate Chain (0) 2022.04.01