FME如何采集肯德基中国的所有门店地址(三)

原文发布时间:2016-09-09 11:44:26

作者:雷中华

参考上文:

FME如何采集肯德基中国的所有门店地址(一)问题分析 

FME如何采集肯德基中国的所有门店地址(二)Python、HttpCaller获取门店Json

Json分析

前面步骤获取到肯德基店面信息的Json信息串,用Notepad++的JsonViewer分析,结构如下:

                             FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

 

关键信息在Table1{array}里,有storeName、addressDetail、pro、provinceName、cityName。

Json对象分为Object和Array两种,最简单的是单独的object。一个Json里还可能有多个object组成的Objects以及数组Array,在肯德基店面信息Json中,难点在于数组(Array)的处理。

FME处理Json三个利器

JsonFragmenter、JsonFlattener、JsonExtrator这三个函数,用法用途各有特色,分别尝试处理,搭建如下

                             FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

结果:

                                FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

JsonFragmenter

                               FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

 

转换器三个重要参数

①Json Query。json["Table1"][*],第一个"json"是固定的,第二个"Table1"参见上面Json结构,重要信息就在Table1组里。最重要的是第三个,Table1下的组,通过[*]通配符来获取;

②Recursively Flatten Arrays这个参数是递归,选“Yes”,可以把组分离

③暴露属性,填的是Json里的Key

JsonFlattener

                                  FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

 

转换器两个重要参数

①同上,递归获取所有数组;

②难点。纠结了好久,数组的表示方法是Table1{},他的属性直接用 Table1{}.storeName

③这个转换器本身输出的数组,还需要借助ListExploder来具体展开这个组。展开的数组是暴露出来的属性 Table1{}

JsonExtractor

                                              FME如何采集肯德基中国的所有门店地址(三) - FME - FME—专业化的空间数据服务实践者

 
这个转换器相对简单,只有一个Json Query参数,它无法处理数组。用[*]通配符,匹配获取到同一个节点下所有的内容。

-END-

猜你喜欢

转载自blog.csdn.net/fmechina/article/details/81457114