原文发布时间:2016-09-09 11:44:26
作者:雷中华
参考上文:
FME如何采集肯德基中国的所有门店地址(二)Python、HttpCaller获取门店Json
Json分析
前面步骤获取到肯德基店面信息的Json信息串,用Notepad++的JsonViewer分析,结构如下:
关键信息在Table1{array}里,有storeName、addressDetail、pro、provinceName、cityName。
Json对象分为Object和Array两种,最简单的是单独的object。一个Json里还可能有多个object组成的Objects以及数组Array,在肯德基店面信息Json中,难点在于数组(Array)的处理。
FME处理Json三个利器
JsonFragmenter、JsonFlattener、JsonExtrator这三个函数,用法用途各有特色,分别尝试处理,搭建如下
结果:
JsonFragmenter
转换器三个重要参数
①Json Query。json["Table1"][*],第一个"json"是固定的,第二个"Table1"参见上面Json结构,重要信息就在Table1组里。最重要的是第三个,Table1下的组,通过[*]通配符来获取;
②Recursively Flatten Arrays这个参数是递归,选“Yes”,可以把组分离
③暴露属性,填的是Json里的Key
JsonFlattener
转换器两个重要参数
①同上,递归获取所有数组;
②难点。纠结了好久,数组的表示方法是Table1{},他的属性直接用 Table1{}.storeName
③这个转换器本身输出的数组,还需要借助ListExploder来具体展开这个组。展开的数组是暴露出来的属性 Table1{}
JsonExtractor
这个转换器相对简单,只有一个Json Query参数,它无法处理数组。用[*]通配符,匹配获取到同一个节点下所有的内容。
-END-