span8
span4
本系列教程提供了使用FME读取、写入和转换JSON数据的概述。
JSON或JavaScript对象表示法是一种遵循开放标准的文件格式,其值可以是一个对象(属性-值对,如{" a ": 5})、一个数组(如[1、2、3、4]),或原语(字符串或数字)。它被广泛用作web交换和消息传递格式。虽然它在web上很流行,主要是因为它是JavaScript中的原生对象数据结构,但它是一种独立于语言的数据格式。
JSON数据与表格数据或GIS数据之间的转换是数据建模的根本区别。JSON通常具有高度嵌套的树结构,而表格和GIS数据通常使用由相关表组成的关系数据库模型。在关系系统中,可能需要几个表来建模给定的JSON对象。
FME可以处理嵌套数据,但其基本设计更适合处理由特性和属性组成的平面表。因此,将JSON数据引入FME需要考虑JSON的结构。
FME |
数据库 |
JSON |
功能 |
记录 |
对象 |
属性 |
场 |
财产 |
列表 |
以逗号分隔 |
数组 |
FME、关系数据库和JSON中数据结构的术语
考虑下面这个嵌套的JSON数据示例,它表示一个表示旧金山机场(SFO)位置的几何点:
{"name": "JSONFeature", "type": " featu", "features": [{"ID": "1001", "geometry": {"type": "Point", "coordinates": [-122.4194155, 37.7749295], "properties": {"name": "SFO", "type": "Airport"}}]}
JSON对象的例子
如果您正在读取JSON或在FME中编写JSON消息,您可以选择将整个JSON字符串存储为一个属性值:
_dataset |
{ “名称”:“JSONFeature”, “类型”:“FeatureCollection”, “特征”:[ { “ID”:“1001”, “几何”:{ “类型”:“点”, “坐标”:[-122.4194155,37.7749295] }, "属性":{ “名称”:“旧金山”, “类型”:“机场” } } ] } |
如果您计划将JSON字符串转换为关系数据库格式或表,则可以选择将JSON字符串“平铺”为包含FME特性和属性的表。创建这样一个扁平的JSON需要选择一个属性来生成特性,每个特性的惟一值都是结果表中的一个新特性或行。例如,在ID属性上压平上面的JSON字符串将创建以下特性:
ID |
geometry.type |
geometry.coordinates |
properties.name |
properties.type |
1001 |
点 |
[-122.4194155, 37.7749295] |
旧金山 |
机场 |
表中表示的JSON对象示例
FME为读取、写入和转换JSON数据提供了灵活的选项,以获得数据集成工作流所需的格式。亚搏在线
这篇概述介绍了本系列教程,提供了JSON格式的概述,并大致说明了FME如何允许读取JSON的嵌套结构。本系列教程中的后续文章详细介绍了使用FME读取、写入和转换JSON数据的选项。
了解如何使用JSON阅读器将JSON数据直接读入工作空间。
学习如何从嵌套的JSON结构中提取坐标信息,并使用它生成FME几何图形。
通过一个多步骤操作的示例,了解更高级的JSON读取技术,其中从JSON提取URL,并使用英国环境局实时洪水监测API。
了解FME为写入JSON提供的选项,并查看使用JSON写入器的基本示例。
了解如何使用JSONTemplater转换器用FME编写定制嵌套JSON。
学习FME最流行的JSON转换器的用例以及如何使用它们。
当您在使用在线数据源或提要时遇到问题时,您最好将链接放在web浏览器中,并在本地下载一个示例JSON响应。然后,可以使用本地文件通过树控件查询JSON,这样就可以找到正确的JSON查询,然后始终可以将阅读器指向在线源。
注意,我刚刚确认了在FME 2018中,你可以在添加阅读器后在阅读器中编辑“模式扫描模式”和“针对功能对象的JSON查询”。我建议升级到最新的FME版本,以便在使用JSON时获得最佳效果。如果您在配置JSON阅读器方面有任何困难,请联系技术支持。
©2019安全亚搏在线软件公司法律