Visual Studio의 기본 기능으로 JSON에서 클래스를 자동으로 생성하는 방법
11095 단어 VisualStudioC#
소개
별로 이 근처의 기본 기능이 유명하지 않은 것 같기 때문에 소개할까 생각합니다.
덧붙여서입니다만 XML 에서도 완전히 같은 것이 가능합니다.
전제
JSON
이번에는 다음과 같은 JSON을 이용하겠습니다.
참조 : Qiita API v2 | /api/v2/templates/:template_id
{
"body": "Weekly MTG on %{Year}/%{month}/%{day}",
"id": 1,
"name": "Weekly MTG",
"expanded_body": "Weekly MTG on 2000/01/01",
"expanded_tags": [
{
"name": "MTG/2000/01/01",
"versions": [
"0.0.1"
]
}
],
"expanded_title": "Weekly MTG on 2015/06/03",
"tags": [
{
"name": "MTG/%{Year}/%{month}/%{day}",
"versions": [
"0.0.1"
]
}
],
"title": "Weekly MTG on %{Year}/%{month}/%{day}"
}
이 JSON을 클립 보드에 복사하십시오.
Visual Studio
클래스 파일 하나 추가
이번에는 Template.cs
를 추가했습니다.
JSON을 클래스로 붙여넣기
[편집] → [형식을 선택하여 붙여넣기] → [JSON을 클래스로 붙여넣기]
Rootobject 클래스 수정
Rootobject
라고 하는 클래스와 함께 관련 클래스가 자동으로 생성되므로, 나머지는 기호로 수정해 갑니다.
여기서 주의해야 할 것은 "속성 이름을 변경해서는 안된다"라는 것입니다. 클래스 이름은 변경해도 괜찮습니다.
이번에는 다음과 같이 했습니다.
여기서 문제가되는 것은 속성 이름이 일반 C# 코딩 가이드 라인을 따르지 않는다는 것입니다.
그래서 이번에는 System.Runtime.Serialization.DataMemberAttribute를 이용해 가겠습니다.
각 프로퍼티에 이 속성을 이용해 주어 다음과 같이 합니다.
이제 Upper Camel Case에서 속성을 작성하면서 성공적으로 deserialize할 수 있습니다.
여기서 주의입니다만, 이용하는 디시리얼라이저에 따라서는 다른 Attribute 가 준비되어 있을 가능성이 있으므로, 그 근처는 문서에 따라 양호하게 대응해 주세요.
디시리얼라이즈 해보자
nuget에서 Utf8Json을 도입하여 deserialize 해보십시오.
Program.csusing System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
var json = @""
{
""body"": ""Weekly MTG on %{Year}/%{month}/%{day}"",
""id"": 1,
""name"": ""Weekly MTG"",
""expanded_body"": ""Weekly MTG on 2000/01/01"",
""expanded_tags"": [
{
""name"": ""MTG/2000/01/01"",
""versions"": [
""0.0.1""
]
}
],
""expanded_title"": ""Weekly MTG on 2015/06/03"",
""tags"": [
{
""name"": ""MTG/%{Year}/%{month}/%{day}"",
""versions"": [
""0.0.1""
]
}
],
""title"": ""Weekly MTG on %{Year}/%{month}/%{day}""
}
"";
var x = Utf8Json.JsonSerializer.Deserialize<Template>(json);
Console.WriteLine($"body= {x.Body}\r\nid= {x.ID}\r\nname= {x.Name}");
}
}
}
실행 결과는 다음과 같습니다.
결론
생성되는 클래스가 처음부터 Upper Camel이라면 더 사용하기 쉽습니다.
거기는 향후 기대라고 하는 곳이군요.
Reference
이 문제에 관하여(Visual Studio의 기본 기능으로 JSON에서 클래스를 자동으로 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Midoliy/items/362bbb95a5c78c6aa401
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
{
"body": "Weekly MTG on %{Year}/%{month}/%{day}",
"id": 1,
"name": "Weekly MTG",
"expanded_body": "Weekly MTG on 2000/01/01",
"expanded_tags": [
{
"name": "MTG/2000/01/01",
"versions": [
"0.0.1"
]
}
],
"expanded_title": "Weekly MTG on 2015/06/03",
"tags": [
{
"name": "MTG/%{Year}/%{month}/%{day}",
"versions": [
"0.0.1"
]
}
],
"title": "Weekly MTG on %{Year}/%{month}/%{day}"
}
클래스 파일 하나 추가
이번에는
Template.cs
를 추가했습니다.JSON을 클래스로 붙여넣기
[편집] → [형식을 선택하여 붙여넣기] → [JSON을 클래스로 붙여넣기]
Rootobject 클래스 수정
Rootobject
라고 하는 클래스와 함께 관련 클래스가 자동으로 생성되므로, 나머지는 기호로 수정해 갑니다.여기서 주의해야 할 것은 "속성 이름을 변경해서는 안된다"라는 것입니다. 클래스 이름은 변경해도 괜찮습니다.
이번에는 다음과 같이 했습니다.
여기서 문제가되는 것은 속성 이름이 일반 C# 코딩 가이드 라인을 따르지 않는다는 것입니다.
그래서 이번에는 System.Runtime.Serialization.DataMemberAttribute를 이용해 가겠습니다.
각 프로퍼티에 이 속성을 이용해 주어 다음과 같이 합니다.
이제 Upper Camel Case에서 속성을 작성하면서 성공적으로 deserialize할 수 있습니다.
여기서 주의입니다만, 이용하는 디시리얼라이저에 따라서는 다른 Attribute 가 준비되어 있을 가능성이 있으므로, 그 근처는 문서에 따라 양호하게 대응해 주세요.
디시리얼라이즈 해보자
nuget에서 Utf8Json을 도입하여 deserialize 해보십시오.
Program.cs
using System;
namespace ConsoleApp
{
class Program
{
static void Main(string[] args)
{
var json = @""
{
""body"": ""Weekly MTG on %{Year}/%{month}/%{day}"",
""id"": 1,
""name"": ""Weekly MTG"",
""expanded_body"": ""Weekly MTG on 2000/01/01"",
""expanded_tags"": [
{
""name"": ""MTG/2000/01/01"",
""versions"": [
""0.0.1""
]
}
],
""expanded_title"": ""Weekly MTG on 2015/06/03"",
""tags"": [
{
""name"": ""MTG/%{Year}/%{month}/%{day}"",
""versions"": [
""0.0.1""
]
}
],
""title"": ""Weekly MTG on %{Year}/%{month}/%{day}""
}
"";
var x = Utf8Json.JsonSerializer.Deserialize<Template>(json);
Console.WriteLine($"body= {x.Body}\r\nid= {x.ID}\r\nname= {x.Name}");
}
}
}
실행 결과는 다음과 같습니다.
결론
생성되는 클래스가 처음부터 Upper Camel이라면 더 사용하기 쉽습니다.
거기는 향후 기대라고 하는 곳이군요.
Reference
이 문제에 관하여(Visual Studio의 기본 기능으로 JSON에서 클래스를 자동으로 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Midoliy/items/362bbb95a5c78c6aa401
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Visual Studio의 기본 기능으로 JSON에서 클래스를 자동으로 생성하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Midoliy/items/362bbb95a5c78c6aa401텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)