# 如何采集Http的 Json 数据到文件或数据库中

傲飞数据云平台提供了从 Http 服务/Rest 服务采集数据、解析数据的能力。

例如我们希望能 1 分钟采集一次比特币和门罗币两种数字货币的人民币、美元的两种价格，并把每分钟价格数据保存在数据库或文件中。

通过傲飞数据云平台，即使不会写代码和SQL，也可以在几分钟之内完成这个开发工作。

流程图如下：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-LkteZYGtE6LQnPlQmr-%2F-LkthXk5bS9XD2dGfBhn%2F2.png?alt=media\&token=93dd7022-c2e3-47bf-afb1-67d909500a92)

流程图中用到的步骤说明如下：

1. 获取系统步骤：获取当前运行时间作为价格的时间，同时激活后面的Http 客户端步骤。
2. Http Client 步骤：调用 coingecko 网站的数字币价格接口，返回 Json 格式的比特币和门罗币的价格。
3. Json Input 步骤：解析Json 数据格式。
4. 字段选择步骤：选择要入库哪些字段
5. 文件输出（或表输出步骤）： 把数据保存在文件中或数据库中。&#x20;

注意：Http Client 步骤不能是第一个步骤，前面必须有获取系统信息或生成记录等步骤，用来产生记录。

首先在获取系统信息步骤中，获取当前的系统时间，保存在 price\_time 字段中：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-LktTBOFymWp13iwIkFB%2F-LkteO2sV0KdxQx7QJLd%2F3.png?alt=media\&token=8aef6e07-c638-48f8-a473-3a432d7efba1)

然后在 HTTP 客户端步骤中，设置 URL，如下图

使用的URL 接口是：<https://api.coingecko.com/api/v3/simple/price?ids=monero,bitcoin&vs_currencies=cny,usd> &#x20;

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-LkteZYGtE6LQnPlQmr-%2F-LkteeMq7S5Z9VavwOZI%2F1.png?alt=media\&token=d74e1787-dc5c-4457-84a3-5c378becdb9e)

设置完 Http Client 后，通过点击 【预览执行】按钮，就可以看到返回的数据，返回的数据默认保存在 result 字段中，如下图：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-LkteZYGtE6LQnPlQmr-%2F-LkthOQ97T6T2VMCAKnL%2F4.png?alt=media\&token=751828dc-98d3-488f-ad52-79d7bf8a7c25)

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-LktiLIrTJo-tSF0czfB%2F5.png?alt=media\&token=567a363e-6cf4-40bd-a6d3-1e3b2ecdff6a)

<br>

然后在后面的 Json input 步骤中，设置数据来源字段，就是Http input步骤的输出字段 - result 字段。

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-Lktio3b5wbyXNpqsq9I%2F6.png?alt=media\&token=46c50d5d-2338-47a4-8aa3-0df832bba558)

<br>

然后在 Json input 步骤的【字段】标签项下，设置要解析的 Json 数据的路径，如下图：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-Lktj01gCtURXSi_uYhG%2F7.png?alt=media\&token=37276a65-40ad-4c3c-ad34-8263f3d7de12)

<br>

然后在转换流程图的 Json input 步骤中上，再预览执行结果，如下图

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-LktlSniVPawObv_fT3U%2F15.png?alt=media\&token=48e6d03b-19bc-43cc-b066-bf5095a70f49)

在字段选择步骤里，去掉不需要的 result 步骤：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-Lktk7o_YCbTCZuIgBkB%2F16.png?alt=media\&token=cd05d06f-886d-43f6-abd4-c479fdcbccc3)

预览结果：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-LktkXtkvgtXoqVANyvV%2F10.png?alt=media\&token=f42c8edd-18b6-44a3-b9a6-6995e954629c)

最后的文本文件输出步骤中，选择或新建一个输出文件：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-LktjeA0kA11HVX-ZuAx%2F11.png?alt=media\&token=063bdcc1-caaa-4125-822e-fa92d3998366)

<br>

在【内容】标签下，选中 追加 方式（不选择的话，后面数据会覆盖前面）

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-Lktkn_5JisLKQxyPiyX%2F12.png?alt=media\&token=9debb235-a9ab-46bd-943f-e70154289d6d)

<br>

这样整个流程配置完成，为了每分钟执行一次，还需要配置调度，如下图：

在【周期】调度里添加一个新调度

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-Lktl6LzzNyqQ59sa7lR%2F13.png?alt=media\&token=4070c187-e91b-4354-8b15-33d1bcfdf56c)

<br>

配置调度每分钟执行一次，如下图：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-Lkti6zCWwaMqYaDT7qR%2F-LktlBIxmN-tTxXg3wZe%2F14.png?alt=media\&token=b38c7a00-b43e-43fd-b437-de53d0cc2ffb)

通过上述配置，可以每分钟采集一次数据了，如果想要提高采集频率，可以配置秒级别的周期采集。

配置后，在【监控】里，可以看到每次运行情况，如下图：

![](https://1321166092-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-La598ga21S8eAIPk5Qq%2F-LkvIQxNqL7NSTbtR6IL%2F-LkvIVz5fOxSz84OAjsI%2Fimage.png?alt=media\&token=643c4665-e0d9-4110-88e2-55561fc0b4df)

如果想要把数据保存在数据库中，可以把最后的【文本文件输出】改成【表输出】。

如果想把每次采集每个币种都保存成一行记录，如下面的格式：

| price\_time1 | coin\_name | cny | usd |
| ------------ | ---------- | --- | --- |
| time1        | bitcoin    | p1  | p2  |
| time1        | monero     | p3  | p4  |
| time2        | bitcoin    | p5  | p6  |
| time2        | monero     | p7  | p8  |
|              |            |     |     |

可以后面再使用【列转行】步骤，将每次采集的 1行5列 数据转换成 2行4列数据。
