斯潘8
斯潘4
本教程将概述如何使用JSON数据和消息。将介绍JSON的转换和转换,以及GIS的转换和转换,以及如何解析和更新JSON。本教程中的练习需要FME桌面版本2017.0或更高版本,以便利用JSON支持方面的最新改进。
JSON是一种常见的数据交换格式,已成为支持网站和移动设备应用程序的主要选择之一。与XML相比,JSON比XML更轻,并且没有单独的模式文档(XSD),因此它是理想的消息传递和交换格式。复杂模式是使XML难以使用的一个方面。JSON比XML更容易读取,这使得它更人性化。例如,它没有XML那样的名称空间。由于JSON不引用外部模式,因此更容易无限制地更新和存储数据。另一方面,没有自动验证JSON的方法,这就是为什么选择XML/GML作为基于标准的交换格式的原因之一。
json是nosql数据库的数据格式。除了关系数据库(如Oracle)之外的另一个数据库选项,MySQL波斯特雷斯克MS SQL Server及其他。
JSON是一种描述结构化数据的编码机制,例如用于消息传递和Web服务。用JSON,它可以创造一个功能性很强的,快速的Web应用程序,例如,在社交媒体网站上发送网络消息。许多网站都提供网络订阅源,一些带有坐标信息,一些没有。这些提要易于在服务器端导入和使用。
JSON-javascript对象表示法
XML-可扩展标记语言
数组-项目系列[0,1,2,3,4]
对象-数据结构中相关值的单位“name”:“bob”
jquery-从JSON数据结构中提取特性的路径
关系数据库有一个模式和存储属性,这些属性被划分为平面数据库表。另一方面,JSON是高度嵌套的,这意味着与关系数据模型相比,值被构造为嵌套对象,而不是桌子。json值可以是一个数组,对象或原语(字符串或数字)。
JSON向/从GIS转换数据的一个大挑战是数据建模的根本区别。地理信息系统通常具有关系结构,而JSON通常是面向对象的。实际上,这意味着JSON通常具有高度嵌套的树结构,包含系列/列表功能和多个几何图形。因此,在关系系统中,可能需要几个表和行来建模给定的JSON对象。
FME可以对复杂的数据对象建模,在JSON中,它由不同的名称调用。虽然FME可以将任何JSON对象转换为一个FME特性,必须考虑JSON的具体文件结构。本教程中的第一个示例将使用JSON阅读器读取带有数据检查器(DI)的文件。
JSON文本要么是具有语法“A”:5的对象,或具有语法[1,2,3]的数组。
FME | 数据库 | 杰森 |
特征 | 记录 | 对象 |
属性 | 场 | 财产 |
表 | 逗号分隔 | 数组 |
JSON是一种嵌套格式,它包含的属性越多,我们进入文件的越深。例如,在下面的代码中,类型“airport”的名称“sfo”嵌套在名称“jsonFeature”的下面一层,类型为“featureCollection”。这些特征以几何图形和特性作为类型列在阵列中。
“name”:“JSonfeature”,“type”:“FeatureCollection”,“features”:[“id”:“1001”,“geometry”:“type”:“点”,“坐标”:[-122.4194155,37.7749295],“properties”:“name”:“sfo”,“type”:“机场”]
JSON对象示例
这个JSON对象有一个结构或模式,当从Features数组中查询时,也可以在表中表示:
身份证件 | 几何类型 | 几何.坐标 | 属性名称 | 性质类型 |
一千零一 | 点 | [-122.4194155,37.7749295 | SFO | 机场 |
表中表示的JSON对象示例
为了读取JSON,我们需要告诉FME哪些嵌套对象应该成为特性。JSON读取的FME方法提供了在JSON阅读器:auto和json查询。自动模式工作更简单,相对平坦的JSON结构。您总是可以先尝试自动模式,看看FME是否可以自动从JSON中提取特性。
JSON查询提供了一种更强大的模式,允许您指定一个过滤器查询,它从更复杂的嵌套结构中提取特性数据。问题是JSON查询语法的构造可能有点困难。为了帮助构建这些JSON查询提取表达式,我们添加了树选择工具。这可以在“特性对象的JSON查询”参数的JSON阅读器设置中访问。用户可以选择树的一部分,单击嵌套数据结构。在上述情况下,我们可以简单地选择树中的“属性”节点来获取SFO机场数据并忽略上面的父数据。
JSON阅读器树视图示例
一旦我们知道哪些对象应该成为特征,我们就可以选择将这些对象中的任何嵌套属性展平为特征属性和几何图形,以获得更为典型的地理信息系统关系结构。扁平化通常包括获取嵌套的父子JSON对象,并在FME特性上创建一个parent.child字段名。还可以记录父/子ID,以支持功能之间的关联。除非是几何图形的一部分,否则数组将成为列表。
还有其他方法,在工作区中处理JSON。例如,这个JSON-FLATENERTransformer可以扁平化JSON对象,将对象键和值提取到一个功能的FME功能属性(JSON类别)中。分段用于将JSON格式的文本部分提取为多个新的FME功能,使用JSONFrimeMnter.这些转换器通常用于支持消息传递应用程序,这些应用程序在本质上比文件转换工作区更为动态。
换一种方式,将FME特性写入JSON文档,我们使用JSontemplater转换器将FME属性合并到所需的JSON结构中。每个特征类型通常被写入自己的子模板中。一旦生成完整的JSON文档,这个文本文件编写器然后用于将其写入文件。注意,我们通常不使用FME JSON编写器,除非我们想要生成一个非常简单的没有嵌套的平面JSON结构。
简而言之,FME涵盖了JSON数据转换的全部范围,从JSON到GIS,从地理信息系统返回JSON。这个概述涵盖了JSON的背景及其挑战。JSON的FME方法包括术语和机场对象示例。下面的文章包含一个示例,说明如何使用JSON向希望在美国机场更新天气和状态的用户发送消息。
?2019安全亚搏在线软件公司|合法的