栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OpenApi3对象与类定义,JSONObject,json文件之间的转换。

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenApi3对象与类定义,JSONObject,json文件之间的转换。

背景:项目中需要扫描注解然后,把有对应注解的方法,生成OpenApi3格式的json返回给前台。由于中间涉及到转发,所以存在OpenApi3对象与json之间的转化。【其实直接把OpenApi3对象序列化了不就行了么。我也是不知道为什么需求就变的奇奇怪怪的,总之把遇到的难点记录下来就是了】

第一部分
JSONObject转OpenApi3

由于下游接口没做好看,我自己从文件读了一组数据出来
这个过程先是JSONObject直接toString转JsonNode
然后就用OpenApi3Parser的转化方法把Node转化成了OpenApi3对象。
需要注意的是OpenApi3Parser的转化方法除了JsonNode一定要一个路径作为输入,这个路径对应的File会作为一个临时文件使用,不影响批量转化。要说为何,那只能说他源码就这样啊。。。
这题提供一下jar包名称:
openapi-parser-4.0.4.jar

    public List getOpenApi3FromMS() throws Exception{
        String s = FileUtils.readFileToString(new File("/Users/i562941/documents/1.txt"));
        //     System.out.println(s);

        JSonArray ja = JSONArray.parseArray(s);
        List o3s = new ArrayList();

        for (Object o : ja) {
            //tmpfile
            OpenApi3Parser openApi3Parser = new OpenApi3Parser();
            ObjectMapper mapper = new ObjectMapper();
            JsonNode jsonNode = mapper.readTree(o.toString());
            //        System.out.println(jsonNode.toString());
            //String classPath = Thread.currentThread().getContextClassLoader().getResource("/").getPath();
            String classPath = "";
            classPath = classPath == null ? "" : classPath;
            //   System.out.println("cp:" + classPath);
            //OpenApi3 execute parse need a tmpfile,Tested,this file reusable
            OpenApi3 openApi3 = openApi3Parser.parse(jsonNode, new URI("file", null, classPath + "/tmp.txt", null).toURL());
            o3s.add(openApi3);
            System.out.println(openApi3.toString());
        }

        //every Object as a File


        return o3s;
    }

第二部分 json文件转OpenApi3

    List getOpenApi3Fromdocument(List files) {
        List o3s = new ArrayList();
        for (File file : files) {
            OpenApi3Parser openApi3Parser = new OpenApi3Parser();
            List events = new ArrayList<>();
            OpenApi3 openApi3 = null;
            try {
                openApi3 = openApi3Parser.parse(file);
            } catch (Exception e) {
                log.error("[EventTypeServiceResolverImpl#parseEventsFromdocument] Failed to parse event metadata by file [{}].", file.getName(), e);
                throw new ApplicationRuntimeException(ErrorCode.ERR_EVENT_TYPE_PARSE);
            }
            o3s.add(openApi3);
        }
        return o3s;
    }

第三部分 类定义 Method转OpenApi3对象
初步说一下。用到的是Swagger源码中的技术。
swagger-core:1.5.22
ModelConverters这个类可以好好看一下。
具体的代码现在还没有。过几天看看。
TO BE CONTINUE…

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/759249.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号