【发布时间】:2013-03-27 13:29:38
【问题描述】:
我在 Clojure REPL 中创建了一个 defrecord:
user=> (defrecord Data [column1 column2 column3])
user.Data
如何通过读取 .json 文件自动向该记录添加数据? defrecord 中的每一列都与 json 数据中的一个键完全对应。如果文件包含一条记录,它看起来类似于:
[
{
"column1" : "value1"
"column2" : "value2"
"column3" : "value3"
}
]
但是文件中有成千上万条这样的记录。
我可以像这样 slurp 文件的内容:
(json/read-json (slurp "path/to/file.json")))
read-json 函数的依赖项被添加到 project.clj 文件中,该文件位于我从命令行运行 lein repl 的目录中::dependencies [org.clojure/data.json "0.2.1"]。
我希望能够使用 Clojure 函数搜索记录的值,这样我传递给搜索函数的值介于单个记录的 column1 和 column2 值之间(即 nth-record.column1.value 查询 nth-record.column2.value em>)。找到匹配记录后,我想返回同一记录中另一列的值 (nth-record.column3.value)。第 1 列和第 2 列的值将是唯一的,表示不重叠的值范围。 column3 的值不是唯一的。
这似乎是一项相当微不足道的任务,但我不知道如何使用 Clojure 文档或我在网上找到的示例来完成它。对我而言,记录在 Clojure 内部如何存储并不重要,只要我可以搜索它们并返回同一记录中相关字段的值即可。
【问题讨论】: