---
title: "API 数据映射"
date: "2021-04-30"
categories: 
  - "data-integration"
  - "tools"
tags: 
  - "api-data-mapping"
  - "data-integration"
  - "excel-data-mapping"
  - "mapforce"
  - "web-services"
description: 学习如何在 MapForce 中调整 API 数据映射，以适应 JSON 响应的变化，从而确保有效的数据集成，并实现准确的报告生成。
---
Status: #blog

Tags:  #api-data-mapping #data-integration #excel-data-mapping #mapforce #web-services

Categories: [data-integration](/blog/zh/category/data-integration.md) 
# API 数据映射

利用 MapForce 进行 Web 服务数据集成是一种流行的且经过验证的策略，旨在获取及时信息，用于分析或生成用户友好的报告。 在之前的文章中，我们展示了如何通过读取 [JSON 格式的 Web 服务数据](https://www.altova.com/blog/web-service-data-integration/)，并将数据映射到格式丰富的 Excel</1> 表格，从而实现对繁忙港口 5 天天气预报的 API 数据映射。 我们使用的天气 API 由 [OpenWeather](file:///C:/Users/dgm/Documents/Shipping%20post%20update/openweathermap.org) 提供，该公司提供历史、当前和天气预报数据。

然而，从任何API集成数据并非一劳永逸的任务。当您构建基于外部数据的解决方案时，必须能够快速应对数据结构的变化。在我们的最初集成项目中，OpenWeather修改了其API提供的数据。现在，API将风速和阵风预测数据分别以JSON属性的形式提供。由于阵风被认为是苏伊士运河最近堵塞事件的原因，这些新的数据对我们的应用程序非常重要！幸运的是，无论是MapForce的数据映射还是Excel电子表格，都可以轻松修改以添加新的数据。

![](/blog/images/container_ship2.jpg)

<!--more-->

在修改API数据映射之前，我们需要了解新版Excel输出格式的变化。以下是5天预报中新版主表格的部分内容：

[![API数据映射中需要补充的信息](/blog/images/wind-gust-column.png)](wind-gust-column.png)

电子表格的创建者在“风速”和“风向”两列之间新增了一列，用于显示每个天气预报的预计阵风情况。

电子表格的标题部分也出现了一些改动。风力图上增加了一条表示阵风速度的线，并添加了港口的地理坐标，此外，还报告了未来5天预测期间的最大阵风速度。

[![API数据映射中需要新增的信息](/blog/images/new-chart-geolocation.png)](new-chart-geolocation.png)

工作表中新增了一个名为“查看当前港口活动”的可点击按钮，点击后会打开一个网页。所有商用船舶都配备了用于[自动识别系统](https://en.wikipedia.org/wiki/Automatic_identification_system) (AIS) 的设备，该系统会持续广播船舶的位置信息，以避免碰撞并用于绘制海图。MyShipTracking.com 是众多利用 AIS 技术来报告实时 AIS 数据，并帮助人们更好地了解全球船舶运行情况的网站和企业之一。

点击电子表格中的按钮，会打开一个位于myshiptracking.com的页面，该页面会显示地理位置附近的活动信息

[![点击电子表格中的“查看端口活动”功能后，可能呈现的示例结果](/blog/images/port-map-1.png)](port-map-1.png)

为了支持这些对目标输出的改进，我们只需要对数据映射进行少量调整：我们需要将风速数据插入到表格中的正确位置，并且需要将地理位置坐标进行映射。

首先，我们手动在浏览器窗口中运行天气API，以获取一个新的响应示例，其中包含风速突增数据。然后，我们使用XMLSpy为API结果生成一个新的JSON Schema。保存新的JSON Schema时，如果使用原始文件名，系统会自动将“风速突增”（Gust）添加到API数据映射中的“响应”字段。

[![JSON 模式定义了用于数据映射的 API 响应的结构](/blog/images/web-service-settings.png)](web-service-settings.png)

附加在原始地理坐标数据上的标签，可以帮助您轻松找到在 Excel 表格中插入新的“风速”列的正确位置

![将新列添加到目标电子表格的API数据映射中](/blog/images/add-cell.png)

从右键菜单中选择“在当前单元格之前添加单元格”，会弹出一个对话框，用于填写相关信息

[![用于定义新目标单元格范围的对话框](/blog/images/add-cell-dialog.png)](add-cell-dialog.png)

MapForce 能够方便地维护 K 列和 L 列的映射关系，因此我们只需要连接 J 列即可。

新的经纬度坐标已添加到电子表格中，分别位于G5和I5单元格。每个港口的坐标已经包含在原始港口列表中，因为我们使用这些坐标向API请求天气预报数据。我们已将这些单元格地址添加到目标列表的底部。

以下是 MapForce 映射面板中修订后的映射视图，其中用于风速预测的新连接已突出显示

[![已完成的API数据映射更新，输出结果中增加了风速峰值和地理坐标信息](/blog/images/new-map-1.png)](new-map-1.png)

为了进行最后一次优化，我们在请求列表中增加了更多港口，包括苏伊士运河以及欧洲的几个大型海港。我们通过编辑原始的 JSON 文件（该文件包含请求列表），并在 XMLSpy 中使用 XML 格式，添加了这些新的港口。以下是包含港口请求的新的 JSON 文件，该文件将作为 API 数据映射的输入，并在 [XMLSpy 的网格视图](https://www.altova.com/zh/xmlspy-xml-editor#JSON) 中显示：

![输入文件中新增的端口将生成新的API请求，并产生相应的数据映射结果](/blog/images/XMLSpy-grid-view.png)

点击映射窗口底部的“输出”按钮，即可执行映射操作，并打开“输出”视图，显示第一个输出文件。如果系统上安装了Excel 2007或更高版本，MapForce会自动打开Excel，以展示结果

[![API数据映射生成的第一个电子表格的预览](/blog/images/output-preview-1.png)](output-preview-1.png)

对于源列表中每个端口，都已生成相应的结果。您可以选择任何Excel文件进行预览：

[![所有15个结果都已经生成，您可以预览查看](/blog/images/output-preview-2.png)](output-preview-2.png)

在预览窗口中点击“查看当前端口活动”按钮，其功能与直接在Excel中打开文件时完全相同：

[![预览窗口中的可点击链接](/blog/images/output-link.png)](output-link.png)

结果是根据港口的纬度和经度计算得出的：

[![苏伊士运河入口附近船只的景象](/blog/images/suez-activity.png)](suez-activity.png)

地图上的每一个点都代表一艘安装了AIS（船舶自动识别系统）的船只，该系统正在实时报告其位置信息。为了进一步验证我们的结果，我们可以预览任何其他输出文件，并查看链接以获取另一个港口的地图。以下是德国汉堡港的地图：

[![“端口活动”按钮在不同的输出文件中会产生不同的结果](/blog/images/hamburg-activity.png)](hamburg-activity.png)

红色圆点代表油轮，绿色圆点代表货船。我们可以点击任何一个圆点，以获取关于该船的详细信息

[![港口停靠的一艘货船的详细信息](/blog/images/hamburg-vessel.png)](hamburg-vessel.png)

您可以查看关于“Web服务集成”的[原始文章](https://www.altova.com/blog/web-service-data-integration/)，观看一个简短的[MapForce演示视频](https://www.altova.com/zh/mapforce/demos)，或者[下载免费试用版](https://www.altova.com/zh/mapforce/download)，其中包含教程、帮助文档以及更多示例，帮助您开始自己的API数据映射项目，或者其他数据集成、转换和处理任务！
