---
title: "使用 MapForce 进行 JSON 数据映射和转换"
date: "2017-02-15"
categories: 
  - "data-integration"
  - "json"
  - "tools"
tags: 
  - "data-mapping"
  - "json"
  - "mapforce"
  - "xmlspy"
description: 探索如何有效地使用 MapForce 进行 JSON 数据的映射和转换，包括与 SQL 的集成以及针对实时数据需求而设计的自动化流程。
---
Status: #blog

Tags:  #data-mapping #json #mapforce #xmlspy

Categories: [data-integration](/blog/zh/category/data-integration.md) | [json](/blog/zh/category/json.md) | [etl](/blog/zh/category/etl.md)
# 使用 MapForce 进行 JSON 数据映射和转换

JSON 是一种流行的数据传输格式，因为它具有简单的标记、体积小，并且基于 JavaScript 编程语言。 [MapForce 支持 JSON 作为 JSON 数据映射和转换的输入和输出格式](https://www.altova.com/zh/mapforce/json-data-mapping.html) 例如，MapForce 可以从任何流行的数据库中提取信息，并生成一个准备好进行传输的 JSON 文件。 **需求示例：** 以下是一个典型的 JSON 数据映射需求示例：一家制造公司通过采用准时生产流程来控制成本，并且库存非常少。新的客户订单记录在销售数据库中，每天结束时，系统会通过查询数据库来统计当天销售所需的组件。所需的零部件将通过采购订单的形式从供应商处订购，采购订单以 JSON 格式传输。

![](/blog/images/shutterstock_152168303.jpg)

<!--more-->

为了使用 MapForce 将 JSON 数据映射并转换，从而生成采购订单，我们需要两个组件：一个用于查询数据库的 SQL 查询语句，以及一个 JSON 实例文档，用于描述采购订单的结构。我们之前已经写过关于数据库映射的文章，最近的一篇是 [Altova 产品线中的数据库功能](https://www.altova.com/blog/database-features-across-the-altova-product-line/), 因此，我们在这里将重点放在 JSON 组件上。

以下是一个JSON实例文件，它作为数据映射输出的模板：

![JSON 数据映射和转换的示例文档](/blog/images/JSON-instance.png)

如果您需要从头开始创建一个 JSON 实例，可以直接在 XMLSpy 中输入，利用其语法高亮、上下文敏感的输入辅助功能、结构标记以匹配括号和花括号，以及其他 JSON 编辑功能。如果您对 JSON 不够熟悉，无法直接输入，您也可以使用 XMLSpy 将一个 XML 实例转换为 JSON 文件。

当我们将 JSON 实例文件导入到数据映射中时，MapForce 会自动根据 JSON Draft 04 规范（[http://tools.ietf.org/html/draft-zyp-json-schema-04](http://tools.ietf.org/html/draft-zyp-json-schema-04)），从该实例文件生成一个 JSON 模式文件。

![MapForce JSON 模式创建](/blog/images/JSON-instance-to-data-mapping.png)

JSON 模式被添加到映射中，其数据元素可以被映射为输入或输出

![JSON 数据映射组件](/blog/images/JSON-component-in-mapping.png)

MapForce 的数据库查询窗口提供了一个便捷的场所，用于测试或优化 SQL 查询语句

![MapForce 数据库查询窗口](/blog/images/mapforce-db-query.png)

我们可以将SQL查询语句嵌入到映射关系中，从而为JSON文件提供源数据

![将数据库查询嵌入到 MapForce 数据映射中](/blog/images/insert-db-query.png)

然后，我们将SQL查询的结果与JSON组件中的数据元素进行关联

![部分数据库到JSON数据映射和转换](/blog/images/partial-mapping-1.png)

请注意，SELECT语句本身会被映射到位于行数组下方的对象声明（如上图红色高亮部分）。这将导致查询结果中的每一行数据都会在输出文件中创建一个新的JSON对象。

最后，为了完成 JSON 数据的映射和转换，我们需要处理日期。我们需要在输出文件中提供订单日期，并且还需要优化 SQL 查询，使其始终选择当天的数据。MapForce 包含一个名为 "now" 的日期时间函数，它可以同时满足这两个需求。

以下是已完成的 JSON 数据映射：

![已完成数据库到JSON数据映射](/blog/images/completed-json-data-mapping.png)

我们使用了额外的日期时间函数来提取月份和日期，并将这些信息作为参数传递给SQL查询。同时，我们从`now`函数中移除了时区信息，以便为JSON输出提供日期。 （我们没有提供年份参数，因为我们的测试销售数据库只包含一年的订单。）

点击“地图转换”窗口下方的“输出”按钮，即可执行转换过程，并将转换结果显示出来

![JSON 数据映射输出](/blog/images/json-data-mapping-output.png)

现在，JSON数据的映射和转换已经准备就绪，可以每天结束时运行，从而生成用于制造线的零件的JSON采购订单。我们可以通过将映射保存为MapForce Server的执行文件来实现自动化，由MapForce Server进行处理。处理过程可以通过批处理文件、在FlowForce Server的控制下，或者通过MapForce Server的API来实现。

或者，为了更深入地了解映射关系，我们可以打开 MapForce 从 XML 文件自动生成的 JSON 模式文件，然后在 XMLSpy 的模式视图中进行查看

![在 XMLSpy 的模式视图中，显示 JSON 模式](/blog/images/json-schema-view.png)

MapForce 是一款强大的数据映射工具，可用于将 JSON 数据映射和转换成或从以下格式：XML、JSON、数据库、EDI、XBRL、纯文本文件、Excel 以及/或 Web 服务。 想要试用它并将 JSON 数据应用于您的项目吗？ 立即下载一个[功能齐全的免费试用版](https://www.altova.com/zh/download-trial.html)！
