从 JSON Sabre REST API 模式生成 C# 模型 类

Generating C# model classes from JSON Schema for Sabre REST API

我们正在实施 Sabre REST API 以在我们的 C# ASP.NET MVC 应用程序中访问航空、酒店和车辆内容。

到目前为止,我们在从 Saber Dev Studio 提供的 JSON 架构文档生成 C# 模型 类 时遇到了一些问题。我们正在使用 Quicktype CLI (https://quicktype.io/) 生成模型 类.

到目前为止我们遵循的步骤:

  1. 已将 OTA_AirLowFareSearchRQ.jsonschemaOTA_AirLowFareSearchRS.jsonschema 个文件下载到一个文件夹中。
  2. 使用 PowerShell 导航到文件夹并调用 quicktype -s schema OTA_AirLowFareSearchRQ.jsonschema OTA_AirLowFareSearchRS.jsonschema -o SabreAirLowFareSearch.cs

不幸的是,它失败并显示消息 "Error: Trying to make an empty union - do you have an impossible type in your schema?"。这似乎与 OTA_AirLowFareSearchRQ.jsonschema.

隔离

是否有从 JSON 架构文档成功生成 C# 模型 类 的工具或最佳实践?

我已经导入了 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)
        {
            JsonSchema jsonSchema = await JsonSchema.FromUrlAsync(url);
            CSharpGenerator generator = new CSharpGenerator(jsonSchema);
            string file = generator.GenerateFile();
        }
    }
}

它生成了附在这个 link 上的代码:https://file.io/LlRNsf(我不确定它会在那里持续多久)

您需要再次调用以获取响应。