cljs-http GET 请求 JSON 文件的 Clojurescript 错误 - 格式错误

Clojurescript error with cljs-http GET request for JSON file - badly formed

这里是 Clojurist 初学者。我正在尝试使用 Clojurescript 和 cljs-http 库解析 JSON 文件。我使用以下函数有奇怪的行为:

(defn make-remote-call [endpoint]
  (go (let [response (<! (http/get endpoint))]
    (js/console.log (:body response)))))

这会将 json 文件打印到控制台,但我会收到此错误消息:

XML Parsing Error: not well-formed
Location: file:///***U2328710-data.json
Line Number 1, Column 1: 

我尝试过的事情:

运行 没有想法 - 有人可以帮忙吗?我想知道 cljs-http 是否不理解它是一个 json 文件,我可以强制它/也许覆盖 headers 吗?谢谢,

我认为这要么是您的 JSON 文件中的编码问题,要么是 cljs-http 库之外的其他问题。我 运行 使用 lein new figwheel json-client 创建的新项目进行了一个小测试,并将对 [cljs-http "0.1.46"] 的依赖添加到 project.clj

对于有效的 JSON 文件,我转到 https://api.github.com/users/clojure/repos 并将内容保存为项目文件夹中的 resources/public/repos.json

我的 core.clj 文件的内容是:

(ns json-client.core
  (:require-macros [cljs.core.async.macros :refer [go]])
  (:require [cljs-http.client :as http]
            [cljs.core.async :refer [<!]]))

(enable-console-print!)

(defn make-remote-call [endpoint]
  (go (let [response (<! (http/get endpoint))]
        (js/console.log (clj->js (:body response)))))) ;; NOTE: cljs->js

(defonce app-state (atom {:text "Hello world!"}))

;; This content is served by figwheel, configured in project.clj
(make-remote-call "http://0.0.0.0:3449/repos.json")

(defn on-js-reload []
  ;; optionally touch your app-state to force rerendering depending on
  ;; your application
  ;; (swap! app-state update-in [:__figwheel_counter] inc)
)

注意:记录到控制台的行只有一个变化(使用clj->js),仅此而已。

...当我用 lein figwheel 启动项目时,它需要几秒钟,然后用项目启动一个新的浏览器选项卡,在控制台上我可以看到它记录了 [=35= 的内容] 文件: