提取swagger内容到csv表格,excel可打开
swagger生成的页面api接口统计,有几种方法
- 直接在前端用js提取出来,较麻烦(不推荐,不同版本的页面生成的标签有可能不一样,因此可能提取不出来)
//apilet a = document.getElementsByClassName("opblock-summary-path");var temp = "";for(var i=0;i<a.length;i++){ temp += "\n" + a[i].getElementsByTagName("span")[0].innerText}
//请求方法let b = document.getElementsByClassName("opblock-summary-method");var temp = "";for(var i=0;i<b.length;i++){ temp += "\n" + b[i].innerText}
//描述let c = document.getElementsByClassName("opblock-summary-description");var temp = "";for(var i=0;i<c.length;i++){ temp += "\n" + c[i].innerText}
- 用页面自带的api-doc中的json数据,解析数据后直接生成csv表格,需要编程
public class JsonToTxtApplication {
public static void main(String[] args) throws IOException {
SpringApplication.run(JsonToTxtApplication.class, args);
FileInputStream in = new FileInputStream("1.txt");
JsonNode jsonNode = new ObjectMapper().readTree(in);
/**
* 取所有数据并存到HashMap中
*/
String api;
HashMap<String, List<Root>> hm = new HashMap<>();
JsonNode node = jsonNode.findValue("paths");
Iterator<String> stringIterator = node.fieldNames();
while (stringIterator.hasNext()) {
JsonNode tags = node.findValue((api = stringIterator.next())); //api
Iterator<String> methodsname = tags.fieldNames();
while (methodsname.hasNext()) {
String method = methodsname.next(); //方法
JsonNode methods = tags.findValue(method);
String name = methods.findValue("tags").get(0).asText();
String description = methods.findValue("description").asText();
Root root = new Root(name, method, api,description); //当前查询到的一个接口数据
//放到hashmap里管理
if (hm.containsKey(root.getName())) {
List<Root> roots = hm.get(root.getName());
roots.add(root);
hm.put(root.getName(), roots);
} else {
ArrayList<Root> roots = new ArrayList<>();
roots.add(root);
hm.put(root.getName(), roots);
}
}
}
/**
* 获得name的顺序,并按顺序写入csv
*/
File file = new File("result.csv");
BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(file), "GBK")); //excel不能读取utf-8编码的csv文件
Iterator<JsonNode> names = jsonNode.findValue("tags").iterator();
while (names.hasNext()) {
String name = names.next().findValue("name").asText();
Iterator<Root> iterator1 = hm.get(name).iterator();
bufferedWriter.write(name + ",");
Boolean isFirst = true;
while (iterator1.hasNext()) {
//如果是第一行增加name,如果不是填入空白格
if (!isFirst) {
bufferedWriter.write(",");
} else {
isFirst = false;
}
Root next = iterator1.next();
bufferedWriter.write(next.getMethod() + "," +
next.getApi() + "," + next.getDescription());
bufferedWriter.newLine();
}
}
bufferedWriter.close();
//打开生成的csv文件
Runtime.getRuntime().exec("cmd /c start F:/Project/JsonSoup/result.csv");
System.out.println("done");
}
}
- 还可以利用xpath helper提取,需要学习一下xpath语法,还需要安装浏览器插件xpath helper。一些环境要求不能安装软件时该方法不适用。其实这种方法跟js提取是一样的,区别就在于xpath提取更加简便快捷。
提取swagger内容到csv表格,excel可打开的更多相关文章
- Python 操作csv和excel表格
1. 操作csv表格 使用的库 csv 1. csv文件里读取数据 代码 1. 以列表形式打开 import csv f = open('csv_test.csv', 'r') # 打开csv文件 c ...
- csv表格处理(上)-- JS 与 PHP 协作导入导出
CSV简介 在开发后台管理系统的时候,几乎无可避免的会遇到需要导入导出Excel表格的需求.csv也是表格的一种,其中文名为“逗号分隔符文件”.在Excel中打开如下图左边所示,在记事本打开如下图右边 ...
- Unity 读取CSV与Excel
前几天看到我们在游戏中需要动态加载某些角色的游戏策划值,关于这个问题怎么解决呢?其实办法很多种,归根到底,就是数据的读取.我们可以想到的存储数据的载体有很多.例如:txt,xml,csv,excel. ...
- csv和excel互转
Python csv转换为excel学习笔记: openpyxl模块需要安装pip install openpyxl import openpyxl import csv '''读取csv文件写入ex ...
- csv表格处理(下)--纯JS解析导入csv
多日前的上篇介绍了csv表格,以及JS结合后端PHP解析表格填充表单的方法.其中csv转换成二维数组的时候逻辑比较复杂多坑,幸好PHP有丰富的库函数来处理,而现在用JS解析的话就没有那么幸运了,一切都 ...
- PHP处理CSV表格文件的常用操作方法是怎么样呢
php来说,fgetcsv读入csv表格,返回一个数组,然后foreach输出成HTML的<table>,这步操作几行代码就能实现,非常简单.工作量主要还在于浏览器前端,建议你用jQuer ...
- 15、解决14中csv用excel打开乱码的问题 open('zhihu.csv','w',newline='',encoding='utf-8-sig')
解决14中csv用excel打开乱码的问题 ,其实就是在写csv的时候把 utf-8 改成 utf-8-sig open('zhihu.csv','w',newline='',encoding='ut ...
- C# 读取CSV和EXCEL文件示例
我们习惯了直接连到数据库上面读取数据表的数据内容: 如果有一天我们需要读取CSV,EXCEL文件的内容的时候,可不可以也像读数据表的方式一样呢?当然可以,使用OleDB ADO.NET是很简单的事情 ...
- 第十七篇:csv拆分、csv转excel方法
首先对微软的office功能表示敬佩!可能是这些办公软件太过平常化,所以体会不到他有多牛!csv格式数据以前没接触过,百度百科定义,Comma-Separated Values,CSV,逗号分隔值,或 ...
随机推荐
- 关于input框仿百度/google自动提示的方法
引入jquery-autocomplete文件 链接:https://pan.baidu.com/s/1hW0XBYH8ZgJgMSY1Ce6Pig 密码:tv5b $(function() { $( ...
- CTF-WeChall-第二天
2020.09.10 奥力给,举步维艰的时候就是要一边做一遍记,虽然慢但是不要嫌弃,要不然就是举步不前
- Docker实战(7):Docker无日志(无*-json.log文件)
出现这种情况基本都是docker 版本太旧,我的处理方案就是将docker 版本升级到最新,然后重新docker run 一遍就会有了.注意:docker 升级后,原来images,容器会出现一些小问 ...
- netty之pipeline
转载自https://blog.csdn.net/zxhoo/article/details/17264263 Netty4学习笔记(1)-- ChannelPipeline Netty4Netty是 ...
- java序列化与反序列化总结
很多商业项目用到数据库.内存映射文件和普通文件来完成项目中的序列化处理的需求,但是这些方法很少会依靠于Java序列化.本文也不是用来解释序列化的,而是一起来看看面试中有关序列化的问题,这些问题你很有可 ...
- 一文带你熟悉JAVA IO这个看似很高冷的菇凉
Java IO 是一个庞大的知识体系,很多人学着学着就会学懵了,包括我在内也是如此,所以本文将会从 Java 的 BIO 开始,一步一步深入学习,引出 JDK1.4 之后出现的 NIO 技术,对比 N ...
- Oracle学习(十六)Oracle安装
为了本地创建数据库自己玩耍,还是下个Oracle的客户端吧... 一.下载地址 注意,要用Oracle的帐号进行登录后才能下载 http://download.oracle.com/otn/nt/or ...
- JS实现简单的多选选项的全选反选按钮
1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4 <!-- 5 需求: 6 1.写三个按钮: ...
- Swiper 在IE9 及其他浏览器使用
Swiper 在IE9 及其他浏览器使用 前言 昨天遇到一个问题,swiper 使用版本是3.4.2 除了Ie9浏览器外其他浏览器都正常,IE9 无法轮播,执行控制台报错源码问题.没办法,只能降级兼容 ...
- 最精美详尽的 HTTPS 原理图!
来源:r6a.cn/ffJk 作为一个有追求的程序员,了解行业发展趋势和扩充自己的计算机知识储备都是很有必要的,特别是一些计算机基础方面的内容,就比如本篇文章要讲的计算机网络方面的知识.本文将为大 ...