Генерация классов модели C# из JSON Schema для Sabre REST API

В нашем приложении C# ASP.NET MVC мы реализуем API-интерфейс Sabre REST для доступа к контенту воздуха, отелей и транспортных средств.

До сих пор мы сталкивались с некоторыми проблемами при создании классов модели C# из документов схемы JSON, предоставленных Sabre Dev Studio. Мы используем Quicktype CLI ( https://quicktype.io/) для генерации классов модели.

Шаги, которые мы проделали до сих пор:

  1. загруженный OTA_AirLowFareSearchRQ.jsonschema а также OTA_AirLowFareSearchRS.jsonschema файлы в папку.
  2. С помощью PowerShell перейдите в папку и вызовите quicktype -s schema OTA_AirLowFareSearchRQ.jsonschema OTA_AirLowFareSearchRS.jsonschema -o SabreAirLowFareSearch.cs

К сожалению, происходит сбой с сообщением "Ошибка. Попытка создать пустое объединение - у вас есть невозможный тип в вашей схеме?". Это кажется изолированным OTA_AirLowFareSearchRQ.jsonschema,

Есть ли инструмент или лучшие практики для успешного создания классов модели C# из документов схемы JSON?

1 ответ

Решение

Я импортировал пакеты NuGet:

  • NJsonSchema
  • NJsonSchema.CodeGeneration
  • NJsonSchema.CodeGeneration.CSharp

И сделал код ниже:

using System;
using System.Threading.Tasks;
using NJsonSchema;
using NJsonSchema.CodeGeneration.CSharp;

namespace RunningTestings
{
    class Program
    {
        static void Main(string[] args)
        {
            CreateClassfromJsonSchema(@"http://files.developer.sabre.com/doc/providerdoc/STPS/bfm/v410/OTA_AirLowFareSearchRQ.jsonschema").Wait();
        }

        public static async Task CreateClassfromJsonSchema(string url)
        {
            JsonSchema4 jsonSchema = await JsonSchema4.FromUrlAsync(url);
            CSharpGenerator generator = new CSharpGenerator(jsonSchema);
            string file = generator.GenerateFile();
        }
    }
}

Который сгенерировал код, прикрепленный по этой ссылке: https://file.io/LlRNsf (я не уверен, как долго он там продлится)

Вам нужно выполнить еще один вызов для ответа.

Другие вопросы по тегам