span8
span4
本教程将概述如何使用JSON数据和消息。将讨论JSON的转换和转换、GIS的转换以及如何解析和更新JSON。本教程中的练习将需要FME桌面版2017.0或更高版本,以便利用JSON支持的最新改进。
JSON是一种常见的数据交换格式,已成为支持web站点和移动设备应用程序的主要选择之一。与XML相比,JSON比XML更轻量,并且没有单独的模式文档(XSD),这使其成为理想的消息传递和交换格式。复杂模式是使XML难于处理的一个方面。JSON比XML更容易阅读,这使得它对用户更友好。例如,它不像XML那样具有名称空间。由于JSON不引用外部模式,因此更新和存储数据就更容易了。另一方面,没有自动验证JSON的方法,这也是为什么选择XML /GML作为基于标准的交换格式的原因之一。
JSON是NoSQL数据库的数据格式,是关系数据库(如Oracle、MySQL、PostgreSQL、MS SQL Server等)之外的另一个数据库选项。
JSON是一种用于描述结构化数据(如用于消息传递和web服务)的编码机制。使用JSON可以创建功能强大但速度很快的web应用程序,例如社交媒体站点上的web消息传递。许多网站提供web提要,有些提供坐标信息,有些不提供。这些提要很容易在服务器端导入和使用。
JSON - JavaScript对象表示法
可扩展标记语言
数组——项目序列[0,1,2,3,4]
对象-数据结构中相关值的单位{" name ": " Bob "}
JQuery——从JSON数据结构中提取特性的路径
关系数据库有一个模式和存储属性,这些属性被划分为平面数据库表。另一方面,JSON是高度嵌套的,这意味着与关系数据模型相比,值的结构是嵌套的对象,而不是表。JSON值可以是数组、对象或原语(字符串或数字)。
从GIS到JSON数据转换的一个大挑战是数据建模的基本差异。GIS通常具有关系结构,而JSON通常是面向对象的。实际上,这意味着JSON通常具有高度嵌套的树结构,并包含系列/列表特性和多个几何图形。因此,它可能需要几个表和行的关系系统给定的JSON对象模型。
FME可以复杂的数据对象模型,即在JSON是由不同的名字叫。虽然FME可以任意JSON对象转换成FME功能,JSON的特定文件的结构必须被考虑在内。在教程第一个例子将使用JSON读者与数据查验(DI)一个文件中读取。
JSON文本或者是具有语法对象{“一”:5},或与语法[1,2,3]的数组。
FME | 数据库 | JSON |
功能 | 记录 | 对象 |
属性 | 场 | 财产 |
列表 | 逗号分隔的 | 数组 |
JSON是一个嵌套的格式,包含更多的属性越深,我们去到一个文件中。例如,在名称下方的代码:“SFO”类型:“机场”低于名称嵌套一层:“JSONFeature”类型:“的FeatureCollection”。的特征列在与几何形状和属性类型的阵列。
{ “名称”: “JSONFeature”, “类型”: “的FeatureCollection”, “功能”:[{ “ID”: “1001”, “几何”:{ “类型”: “点”, “坐标”:[ -122.4194155,37.7749295]}, “属性”:{ “名称”: “SFO”, “类型”: “机场”}}]}
JSON对象例如
此JSON对象具有结构或模式,并且还可以在从所述特征阵列查询时的表表示:
ID | geometry.type | geometry.coordinates | properties.name | properties.type |
1001 | 点 | [-122.4194155, 37.7749295] | 旧金山 | 机场 |
JSON对象例如在表中表示
为了读取JSON我们需要告诉FME其中嵌套的对象应该成为功能。在FME方法JSON阅读提供两种模式在做这个JSON阅读器汽车:汽车,JSON查询。自动模式下正常工作更简单,相对平坦的JSON结构。你总是可以先尝试在自动模式下,看是否FME可以从您的JSON自动提取特征。
JSON查询提供了一个更强大的模式,允许你指定一个筛选器查询其提取特征更为复杂的嵌套结构的数据。我们面临的挑战是,JSON查询语法可以是一个有点棘手建设。帮助建立这些JSON查询提取表达式,我们添加了树选择工具。这可以在JSON读者设置的“JSON查询功能对象”参数中进行访问。用户可以通过点击在嵌套结构的数据的选择树的一部分。在上面的例子中,我们可以简单地在树中选择“属性”节点来获得SFO机场数据,而忽略高于母体数据。
JSON的读者树视图的例子
一旦我们知道哪些对象应该成为功能,我们必须压平这些对象到要素属性和几何中的任意嵌套属性更关系结构的典型GIS的选项。通常压扁涉及服用嵌套亲子JSON对象和创建的FME功能parent.child字段名。父/子IDS还可以记录到特征之间支持的关联。阵列成为除非一个几何形状的零件清单。
还有其他的方法,在工作空间内处理JSON。例如,JSONFlattener变压器可以拼合JSON对象,对于一个特征提取对象键和值到FME特征属性(JSON类别)。破碎是用于提取JSON格式的文本的部分分成多个新的特征FME使用JSONFragmenter。这些变压器经常被用来支持在本质上不是一个文件的翻译工作空间更加动态消息应用程序。
为了走另一条路,并写入FME功能的JSON文件,我们使用JSONTemplater变压器合并FME属性为所需的JSON结构。每个要素类型通常被写进了自己的子模板。一旦生成了完整的JSON文件中,文本文件作家然后使用它写入一个文件。请注意,我们通常不使用FME JSON作家,除非我们要生成的嵌套一个非常简单的平面JSON结构。
因此,在短期,FME占地面积JSON数据转换的整个范围,无论从JSON到GIS和GIS从回JSON。本概述所涵盖的背景JSON和挑战。的FME方法JSON包括在术语和机场对象实例。下面的文章中包含一个示例,说明JSON是如何被用于饲料消息谁想要在天气状况在美国机场被更新的用户。
当您在使用在线数据源或提要时遇到问题时,您最好将链接放在web浏览器中,并在本地下载一个示例JSON响应。然后,可以使用本地文件通过树控件查询JSON,这样就可以找到正确的JSON查询,然后始终可以将阅读器指向在线源。
注意,我刚刚确认了在FME 2018中,你可以在添加阅读器后在阅读器中编辑“模式扫描模式”和“针对功能对象的JSON查询”。我建议升级到最新的FME版本,以便在使用JSON时获得最佳效果。如果您在配置JSON阅读器方面有任何困难,请联系技术支持。
©2019安全亚搏在线软件公司法律