使用request.el解析json以从ipinfo.io获取位置数据

时间:2017-11-29 23:50:52

标签: json emacs

Request.el似乎是为了轻松查询返回json响应的Web服务而构建的。

我想用它来获取从查询返回http://ipinfo.io

的城市和州的结果

如果从命令行发出以下内容:

curl https://ipinfo.io

我回过头来看:

{
  "ip": "24.xxx.xxx.xxx",
  "hostname": "cpe-xx-xxx-xxx-x.xxx.xxx.xx.com",
  "city": "Brooklyn",
  "region": "New York",
  "country": "US",
  "loc": "40.6406,-74.0169",
  "org": "AS12271 Time Warner Cable Internet LLC",
  "postal": "11220"
}%    

我想撤出" city"和"州"将值作为字符串放入单个变量中,例如:

(setq my-location "Brooklyn, NY")

虽然resolve.el页面包含大量文档,但我不是程序员,我根本不了解如何获取所需信息。我非常确定自己走上了正确的道路,但我只是缺乏知道如何到达我想去的地方。

1 个答案:

答案 0 :(得分:1)

这样的事可能有用:

    (require 'request)
    (request "https://ipinfo.io"
             :parser 'json-read
             :success (cl-function
                       (lambda (&key data &allow-other-keys)
                         (message "I sent: %S" (assoc-default 'args data))
                         (message "Data is %s" data )
                         (message "Result is %s, %s" (assoc-default 'city data) (assoc-default 'region data)))))

(未经测试,因为我有内部IP地址,因此无法访问城市/地区数据。)