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] | SFO | 飞机场 |
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安全亚搏在线软件公司法律