Clojure的Cheshire JSON API无法读取整个JSON文件

ade*_*sin 3 clojure

我有以下格式的JSON数据:

{"load":{"meta": 12345}}
{"load":{"meta": 54321}}
...
Run Code Online (Sandbox Code Playgroud)

当我尝试使用Cheshire加载数据时,我只返回转换为edn的第一行数据:

(def read-json-data (parse-string (slurp "data/json_data") true))

=> {:load {:meta 12345}}
Run Code Online (Sandbox Code Playgroud)

如果有人来到这里并且可以帮助展示如何阅读整个文件将非常感激.

bsv*_*gen 8

这是正确的行为 - cheshire/parse-string解析它可以找到的第一个JSON对象.

如果您希望将整个文件解析为单个JSON对象,则应该创建一个数组:

[{"load": {"meta": 12345}},
 {"load": {"meta": 54321}},
 ...]
Run Code Online (Sandbox Code Playgroud)

或者,如果要分别解析每一行,可以执行以下操作:

(map #(cheshire/parse-string % true)
     (line-seq (clojure.java.io/reader "data/json_data")))
Run Code Online (Sandbox Code Playgroud)

(另外,请注意JSON中的冒号.)