Arrays 解析Swagger JSON数据并将其存储在.net类中
我想将从{service}/Swagger/docs/v1获取的JSON中的Swagger数据解析为动态生成的.NET类 我面临的问题是,不同的API可以有不同数量的参数和操作。如何动态解析不同服务的Swagger JSON数据Arrays 解析Swagger JSON数据并将其存储在.net类中,arrays,json,dynamic-arrays,swagger,swagger-ui,Arrays,Json,Dynamic Arrays,Swagger,Swagger Ui,我想将从{service}/Swagger/docs/v1获取的JSON中的Swagger数据解析为动态生成的.NET类 我面临的问题是,不同的API可以有不同数量的参数和操作。如何动态解析不同服务的Swagger JSON数据 我的最终结果应该是一个变量中所有API及其操作的列表,我可以在该变量上轻松执行搜索。您找到过这个问题的答案吗?今天我想做同样的事情,所以我使用了MSFT的AutoRest开源项目。虽然它看起来是为生成客户机代码而设计的(用于使用您的swagger文档中记录的API的代码
我的最终结果应该是一个变量中所有API及其操作的列表,我可以在该变量上轻松执行搜索。您找到过这个问题的答案吗?今天我想做同样的事情,所以我使用了MSFT的AutoRest开源项目。虽然它看起来是为生成客户机代码而设计的(用于使用您的swagger文档中记录的API的代码),但在生成此代码的过程中,它必须完全按照您在问题中提出的要求完成—解析swagger文件并理解API支持的操作、输入和输出 事实上,我们可以得到这些信息——AutoRest公开披露这些信息 因此,使用nuget安装自动测试。然后添加对AutoRest.core和AutoRest.Model.Swagger的引用。到目前为止,我只是想:
using Microsoft.Rest.Generator;
using Microsoft.Rest.Generator.Utilities;
using System.IO;
要解析的swagger文档名为swagger.json,位于bin目录中。您可以从他们的GitHub()获取的AutoRest.json文件。我不是100%确定它是如何使用的,但似乎需要告知工具支持什么。这两个JSON文件都需要在您的bin中
serviceClient对象就是您想要的对象。它将包含有关方法、模型类型、方法组的信息
让我知道这是否有效。您可以尝试使用他们的资源文件。在玩()时,我使用了他们的ExtensionLoaderTests作为参考
(还要感谢《自动测试》的作者丹尼斯)
var settings = new Settings();
settings.Modeler = "Swagger";
var mfs = new MemoryFileSystem();
mfs.WriteFile("AutoRest.json", File.ReadAllText("AutoRest.json"));
mfs.WriteFile("Swagger.json", File.ReadAllText("Swagger.json"));
settings.FileSystem = mfs;
var b = System.IO.File.Exists("AutoRest.json");
settings.Input = "Swagger.json";
Modeler modeler = Microsoft.Rest.Generator.Extensibility.ExtensionsLoader.GetModeler(settings);
Microsoft.Rest.Generator.ClientModel.ServiceClient serviceClient;
try
{
serviceClient = modeler.Build();
}
catch (Exception exception)
{
throw new Exception(String.Format("Something nasty hit the fan: {0}", exception.Message));
}