source

JSON 스키마에서 C# 클래스 생성

lovecheck 2023. 4. 2. 10:38
반응형

JSON 스키마에서 C# 클래스 생성

JSON C# WCF Web Service 。클라이언트는 현재 다른 팀에서 개발 중인 iPad 어플리케이션이기 때문에 샘플 데이터 없이 사양 작업을 하고 있습니다.
현재 JSON 문자열은 .net 프레임워크에 의해 작성되고 있습니다.웹 서비스는 DataContracts를 사용하여 프레임워크에 의해 시리얼화된 모든 정보를 포함하는 C# 개체를 반환하고 있습니다.

문제는 통신 사양에 JSON Schema 파일만 포함되어 있다는 것입니다(http://json-schema.org/)에 근거).개발을 용이하게 하기 위해 C#에 대응하는 클래스를 생성하고 싶은데, 파일에는 꽤 많은 정보가 포함되어 있고, 파일이 12개 있기 때문에 수동으로 클래스를 만들고 싶지 않습니다.

그래서 다음 중 하나를 할 수 있는 툴을 찾고 있습니다.

  • JSON 스키마에서 C# 클래스를 생성하려면
  • JSON 스키마를 XSD 파일로 변환합니다.그러면 XSD에서 클래스를 생성할 수 있는 툴이 풍부하기 때문에 클래스를 쉽게 만들 수 있습니다.

JSON Schema에 대해 JSON 문자열을 검증하거나 JSON 문자열에서 클래스를 생성하는 많은 도구를 찾았지만 도움이 되지 않는 것 같습니다.
JSON이 있어요.NET은 툴이 아닌 라이브러리인 것 같고, 클래스 생성에 대한 정보를 찾을 수 없었습니다.

툴을 알고 있거나 클래스를 생성하는 방법을 알고 있는 사람이 있다면(Java에서 클래스를 만드는 툴을 시도했지만 실행할 수 없었습니다).

Visual Studio 2017에는 이런 특징이 있습니다.

메뉴에서 Edit, Paste Special, Paste JSON As Classes 순으로 선택합니다.JSON에 붙여넣으면 Visual Studio에서 필요한 클래스를 만듭니다.

여기에 이미지 설명 입력

NUGET에서 이 도서관을 찾아봐.NJson Schema.Code Generation을 사용하면 JSON 스키마에서 C# 또는 TypeScript 코드를 생성할 수 있습니다.

var generator = new CSharpGenerator(schema);
var file = generator.GenerateFile();

이제 파일 변수에는 JSON 스키마에 정의된 모든 클래스의 C# 코드가 포함됩니다.

라이브러리 NJsonSchema를 사용하여 JSON 스키마를 읽거나 유형에서 스키마를 생성하여 C# 클래스를 생성할 수 있습니다.

이러한 작업에 GUI가 필요한 경우 NSwag 도구에서 NSwag Studio GUI를 사용해 보십시오.(NJsonSchema도 기반으로 함)

이 질문에 올바르게 답하려면 Json Schema에 있는 버전(초안)을 알아야 합니다.

라이브러리가 처리할 수 있는 스키마(2018-01-19)의 예:

Json.NET Schema supports draft 3, draft 4, draft 6 (MIT)
Manatee.Json supports draft 4, draft 6, draft 7 (MIT)
NJsonSchema supports draft 4 (Ms-PL)

http://json-schema.org/implementations.html#validator-dotnet

와 함께NJsonSchema.CodeGeneration실제 JSON을 직접 보낼 수도 없습니다.먼저 실제 스키마로 변환해야 합니다(흔히 다음 오류가 발생합니다).Unable to cast object of type 'System.String' to type 'NJsonSchema.JsonSchema4그렇지 않은 경우).

실행 코드의 예,Schemas폴더는 프로젝트 루트에 있습니다.

class Program
{
    static void Main(string[] args)
    {
        var location = Assembly.GetExecutingAssembly().Location;
        var path = Path.GetFullPath(Path.Combine(location, @"..\..\..\Schemas"));
        var schemaJson = File.ReadAllText($"{path}Test.json");
        var schema = JsonSchema4.FromJsonAsync(schemaJson).Result;
        var generator = new CSharpGenerator(schema);
        var generatedFile = generator.GenerateFile();
    }
}

그래서 다음 중 하나를 사용할 수 있는 툴을 찾고 있습니다.JSON Schema에서 C# 클래스를 생성하려면...

직접 사용해 본 적이 없기 때문에, 별로 코멘트는 할 수 없지만, 「json-schema-to-poco」라고 하는 툴은 당신에게 맞는 것 같습니다.

GITHub readme에 따라:

JSON 스키마 파일을 C#의 플레인오브젝트로 변환합니다.자동화된 빌드 프로세스의 일부로 실행할 때 유용합니다.

다음은 JSON 데이터 샘플세트에서 C# 클래스를 생성하기 위해 이전에 사용한 온라인 클래스 생성기입니다.

http://json2csharp.com/

저는 오늘 이것이 필요했고 당신의 질문에 대한 확실한 답을 찾지 못했기 때문에 이것을 서둘러 만들었습니다.완벽하진 않지만 시작점이 좋아요.

https://gist.github.com/rushfrisby/c8f58f346548bf31e045

Json의 도움을 보세요.NET Json이 있습니다.유용할 수 있는 스키마 네임스페이스입니다.

http://james.newtonking.com/projects/json/help/

Json.NET - Quick Starts & API Documentation Newtonsoft.Json.Schema 네임스페이스 © Newtonsoft.Json.Schema

프로젝트 페이지: http://json.codeplex.com/

언급URL : https://stackoverflow.com/questions/6358745/generate-c-sharp-classes-from-json-schema

반응형