我想要通过我的POST请求向CRM的API文档中发送JSON文件。
这个JSON文件是一个多层级的文件,在Clojure中被视为持久化数组映射。
我的发布代码如下:
(def contacts (http/post "https://api.close.com/api/v1/data/search"
{:basic-auth [api ""]
:body closeFilter
}))
CloseFilter代表我想要发布的多层JSON。
然而,我遇到了以下错误:
class clojure.lang.PersistentArrayMap cannot be cast to class [B (clojure.lang.PersistentArrayMap is in unnamed module of loader 'app'; [B is in module java.base of loader 'bootstrap')
这里我犯了什么错误?
更新
我正在重新创建一个我在JavaScript中拥有的程序。发布相同的文件可以完美地工作。
更新2-MRE
我仍然在努力解决这个问题,所以这里是我的代码示例。
我的代码首先需要我需要的包:
(ns schedule-emails.core
(:require [clj-http.client :as http]
[clojure.data.json :as json]
[cheshire.core :refer :all]))
然后,我将本地JSON文件解析到应用程序中。这个JSON返回一个嵌套向量的映射。
(def closeFilter
(json/read-str
(slurp "URL TO LOCAL FILE")))
最后,我想将这些信息从本地文件发布到软件中:
def contacts (http/post "API URL HERE"
{:accept :json
:as :json
:content-type :json
:basic-auth [api ""]
:body closeFilter}))
然而,我遇到了以下错误:
class clojure.lang.PersistentArrayMap 无法转换为类 [B (clojure.lang.PersistentArrayMap 在加载器“app”的未命名模块中;[B 在加载器“bootstrap”的 java.base 模块中)
我也尝试了下面建议的解决方案,但是我仍然遇到相同的问题。
:as :json
和内容类型。但是我仍然收到相同的错误。为了上下文,closeFilter
来自一个变量,该变量从文件系统读取 JSON 文件。 - Vinn