利用kettle HTTP Client 获取百度API区域位置内相关信息,并解析json

2 篇文章 0 订阅

Kettle 除了常规的数据处理之外,还可以模拟发送HTTP client/post  ,REST client。

这几天我用HTTP GET 请求访问了百度 提供的接口(百度地图开放平台),并通过kettle、java两种方式进行了解析。

kettle使用组件是 json input ;java使用的 阿里巴巴Json工具 : Fastjson ;

对于新手来说kettle 的HTTP GET 组件执行速度确实优于自己书写的程序,最主要的是太方便了。

单对于json解析来说, kettle、java 解析规则相似。

kettle 在读取已知结构的 JSON  时可以自动给出解析方案,非常方便。像获取 API 然后进行解析,需要自己书写解析规则。

对于结构总体相似,但又细微差别的 JSON 解析,kettle不支持。因此 java 的灵活多变和容错处理则显得颇为可爱。  

本文章只写kettle 当中的 HTTP client/ json input 两个组件 。

HTTP client 组件

1、该组件在kettle当中的位置:

2、参数设置

HTTP client 通过url调用接口,有两种方式。第一种我们直接给定 url,第二种我们通过步骤从前一步当中传 url 过来。

调用之后返回的数据一般会以json的形式存在一个字段当中。我们可以通过设定“结果字段名”对获取后的 json 进行命名,方便下面操作。

在调用HTTP client 时我们也可以添加请求头(普通url不添加也是可以访问的)。

kettle 解析json

kettle 解析json主要通过 输入内的组件 json input 。

使用该组件时,必须保证解析的json的格式完全符合自己编写的解析规则

读取本地文件解析无需勾选 源定义在一个字段里 。

勾选之后可以从上个步骤当中获取包含json的字段 ,对其解析。该字段一般会是 http client  的 结果输出字段名 。

json 结构未知的我们需要自己书写解析规则。

以下面的json 为例 ,我们需要获取 results 中的name 、lat、children等信息对应的json解析规则如下

{
    "status":0,
    "message":"ok",
    "total":134,
    "results":[
        {
            "name":"北京市dnf小学",
            "location":{
                "lat":39.923629,
                "lng":116.388059
            },
            "address":"府右街丙27号",
            "province":"北京市",
            "city":"北京市",
            "area":"西城区",
            "street_id":"8ca69c393be618bfc061e",
            "telephone":"",
            "detail":1,
            "uid":"8ca69c70e393befc061e",
            "detail_info":{
                "tag":"教育培训;小学",
                "navi_location":{
                    "lng":116.3887231398,
                    "lat":39.92324024956
                },
                "type":"education",
                "detail_url":"",
                "overall_rating":"0.0",
                "children":[

                ]
            }
        },
        {
            "name":"dudu小学(遂安伯校区)",
            "location":{
                "lat":39.922193,
                "lng":116.430818
            },
            "address":"金宝街65号",
            "province":"北京市",
            "city":"北京市",
            "area":"东城区",
            "street_id":"9bdab243406c476051",
            "detail":1,
            "uid":"9bda75243406c476051",
            "detail_info":{
                "tag":"教育培训;小学",
                "navi_location":{
                    "lng":116.431089492,
                    "lat":39.9215554065
                },
                "type":"education",
                "detail_url":"",
                "children":[

                ]
            }
        }
]
}

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值