JSON写模块
作者:互联网
数据下载百度网盘 请输入提取码
提取码:2021
介绍
FME 提供了编写 JSON 数据的多种方法。此表概述了方法及其常见用例:
方法 | 常见情况 |
JSON Writer | 写简单,无嵌套的JSON |
JSONTemplater + Text File Writer | 写嵌套的 Json |
FeatureWriter | 在转换过程中写 Json |
HTTPCaller | 通过 HTTPCaller请求发送 Json 消息 |
GeoJSON Writer | JSON 数据遵循 GeoJSON 规范 |
Esri JSON Writer | JSON 数据遵循 Esri JSON 规范 |
IMDF Writer | JSON 数据遵循 IMDF GeoJSON 规范 |
本文展示了使用 JSON 写模块写出的简单示例。JSON 写模块提供了一种快速而简单的方法,将您的数据转入 JSON 格式。然而,它只适合写没有嵌套JSON。如果你想写嵌套的JSON,你可以使用JSONTemplater与文本文件写模块。该工作流程包含在下一个教程中。
分步说明
1. 启动 FME 工作台并生成工作空间
启动 FME 工作台并单击"生成工作空间"。
对于读模块格式,请选择Microsoft Excel。数据集是PublicArt.xlsx,可在上面下载。
单击参数按钮以预览 Excel 数据。您将看到 Excel 工作簿由六个sheet组成,每张都代表温哥华的一个社区:
单击"取消",因为我们不需要修改读模块参数。
对于写模块格式,请选择 JSON(JavaScript Object Notation)。对于数据集,请在任何您愿意的地方写出名为"PublicArt.json"的本地 JSON 文件。
单击"参数"按钮。默认情况下,在写给 JSON 时,每个 FME 要素都会成为 JSON 阵列中的一个元素,其属性嵌套在它下面。FME 功能类型包含为属性,json_featuretype。默认情况下,请检查"写几何",它允许您在目的地 JSON 文件中以多种格式包含 FME 几何形状。
对于本文,我们将每个PublicArt sheet作为 JSON 阵列中的元素进行编写,但我们希望将neighborhood作为属性。由于源 Excel 文件中的每个表都对应于neighborhood,因此我们可以简单地将默认json_featuretype属性重命名为"neighborhood"。
取消检查写Geometry,因为我们不想将Geometry包含在我们简单的JSON输出中。
我们可以将剩余的写模块参数保留为默认值。您的编写者参数对话应是这样的:
单击"确定"。
生成工作空间对话应是这样的:
单击"确定"。
您的工作空间将生成,并会看起来像这样:
2. 运行工作空间
单击"运行"按钮以运行工作空间。一旦您的工作空间成功运行,请单击"Downtown"要素集选择它。然后单击"Inspec"按钮,打开预览中的输出数据集:
您应该查看桌视图中显示的Downtown数据集及其所有原始属性。您可以通过打开显示控制窗口来验证"neighborhood"的功能类型属性是否用于将数据拆分为功能类型,以查看每个区块是 JSON 文件中的功能类型:
3. 检查结果
如果您在文本编辑器(如记事本)中检查 JSON 文件,您会注意到每个功能都有Neighborhood属性:
[
{
"Neighborhood" : "Downtown",
"Name" : "Harbour Centre Parkade",
"Title" : "The Belonging Action",
"Longitude" : -123.110097741722,
"Latitude" : 49.2837806793832
},
…
]
但是,您也会注意到,这不是组织 JSON 文件的非常有效的方法,因为它根本没有利用 JSON 的嵌套结构。它可以与Neighborhood作为层次的顶层结构,每个艺术装置下相关的Neighborhood,例如:
{
"Downtown": [{
"Name": "Harbour Centre Parkade",
"Title": "The Belonging Action",
"Longitude": -123.110097741722,
"Latitude": 49.2837806793832
},
{
"Name": "Chinese Cultural Centre",
"Title": "China Gate",
"Longitude": -123.103282272368,
"Latitude": 49.2797561341325
},
...
],
"Strathcona": [{
"Name": "National Works Yard",
"Title": "Roller",
"Longitude": -123.092675,
"Latitude": 49.2736209999959
},
{
"Name": "Jim Green Residence",
"Title": "Entranceway",
"Longitude": -123.095131,
"Latitude": 49.2842699999959
},
...
],
...
}
这一点说明, Fme 的 Json 写模块最好用于不需要嵌套的情况。对于您希望嵌套 JSON 数据的案例,请参阅下一个教程和JSONTemplater 转换器。
标签:单击,嵌套,JSON,模块,FME,数据 来源: https://blog.csdn.net/fmechina/article/details/121290584