상세 컨텐츠

본문 제목

[.NET] 역직렬화할 클래스가 없는 경우 JsonNode

.NET

by 코딩하는 박줄기 2022. 10. 10. 23:25

본문

728x90
반응형

역직렬화하려는 JSON이 있고 역직렬화할 클래스가 없는 경우 또는 수신하는 JSON에 고정된 스키마가 없는 경우 해당 스키마가 포함된 내용을 알기 위해 검사할때 사용할 수 있습니다.

 

* .NET 6, console

준비

using System.Text.Json.Nodes;

 

JsonNode (역직렬화할 클래스가 없는 경우)

using System.Text.Json.Nodes;

var options = new JsonSerializerOptions 
{
    //Encoder : 문자 인코딩 사용자 지정
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
    //WriteIndented : 사용자 가독성을 위해 JSON의 서식을 지정
    WriteIndented = true 
};

string jsonString = @"
{
  ""Name"": ""박진우"",
  ""Age"": 28,
  ""Nickname"": [
    ""원빈"",
    ""장동건"",
    ""현빈""
  ],
  ""Favoritefood"": [
    ""소고기"",
    ""돼지고기"",
    ""닭고기""
  ],
  ""Birthday"": ""1994-08-09T00:00:00+09:00"",
  ""Employed"": true
}
";

JsonNode jsonNode = JsonNode.Parse(jsonString);

Console.WriteLine(jsonNode.ToJsonString(options));
Console.WriteLine(jsonNode["Name"]);
Console.WriteLine(jsonNode["Age"]);
Console.WriteLine(jsonNode["Nickname"]);
Console.WriteLine(jsonNode["Favoritefood"].ToJsonString(options));
Console.WriteLine(jsonNode["Birthday"]);
Console.WriteLine(jsonNode["Employed"]);

//output : 
박진우
28
[
  "\uC6D0\uBE48",
  "\uC7A5\uB3D9\uAC74",
  "\uD604\uBE48"
]
[
  "소고기",
  "돼지고기",
  "닭고기"
]
1994-08-09T00:00:00+09:00
true

 

참조

728x90
반응형

관련글 더보기

댓글 영역