Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 解析Swagger JSON数据并将其存储在.net类中_Arrays_Json_Dynamic Arrays_Swagger_Swagger Ui - Fatal编程技术网

Arrays 解析Swagger JSON数据并将其存储在.net类中

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的代码

我想将从{service}/Swagger/docs/v1获取的JSON中的Swagger数据解析为动态生成的.NET类

我面临的问题是,不同的API可以有不同数量的参数和操作。如何动态解析不同服务的Swagger JSON数据


我的最终结果应该是一个变量中所有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));
        }