clj-http/get url {:as:json}不能在脚本中工作,但在REPL中

问题描述:

我正在试验Clojure和Leiningen。 我成功地执行于REPL以下行:clj-http/get url {:as:json}不能在脚本中工作,但在REPL中

(print (:body (client/get "https://coinbase.com/api/v1/prices/spot_rate?currency=CAD" {:as :json})) 

我创建了一个项目,lein new http。当我运行以下行时,lein run然后强制转换为JSON不起作用。它只是打印一个正确的JSON字符串。

(ns http.core 
    (:require [clj-http.client :as client]) 
    (:use clojure.pprint)) 

(defn -main 
    [] 
    (print 
    (:body 
     (client/get "https://coinbase.com/api/v1/prices/spot_rate?currency=CAD" {:as :json})) 

脚本的输出是

{"amount":"306.89","currency":"CAD"} 

任何想法有什么不对?

+0

你使用的是什么版本的clj-http。另外,你期望输出什么? – RedDeckWins

+0

我已经在我的project.clj中配置了clj-http 2.0.0。但我怀疑REPL拉了一个不同的版本。我不知道如何检查。预期的输出是Clojure地图{:amount“306.89”,:currency“CAD} –

+0

[typos fixed]我在我的project.clj中配置了clj-http 2.0.0。但是我怀疑REPL拉一个不同的版本,我不知道如何检查,预期的输出将是一个Clojure地图{:amount“306.89”,:currency“CAD} –

我不知道到底发生了什么变化,但[clj-http“1.1.2”]有你想要的行为。

事实证明,clj-http版本2.0.0发生了重大变化。 现在必须明确列出project.clj中的可选依赖关系。 我添加后

[cheshire "5.5.0"] 

我的列表的依赖关系程序按预期工作。 请参阅更改文件here