ClojureREPLでdefrecordを作成しました。
user=> (defrecord Data [column1 column2 column3])
user.Data
.jsonファイルを読み込んで、このレコードへのデータの追加を自動化するにはどうすればよいですか?defrecordの各列は、jsonデータのキーに正確に対応しています。ファイルに単一のレコードが含まれている場合、次のようになります。
[
{
"column1" : "value1"
"column2" : "value2"
"column3" : "value3"
}
]
しかし、ファイルにはそのようなレコードが何千もあります。
私はこのようにファイルの内容を丸呑みすることができます:
(json/read-json (slurp "path/to/file.json")))
lein repl
read-json関数の依存関係は、コマンドラインから実行しているディレクトリにあるproject.cljファイルに追加されます:dependencies [org.clojure/data.json "0.2.1"]
。
Clojure関数を使用してレコードの値を検索できるようにしたいのですが、検索関数に渡す値は、単一のレコードのcolumn1とcolumn2の値の間にあります(つまり、nth-record.column1)。 .value <= query <= nth-record.column2.value)。一致するレコードを見つけたら、同じレコード内の別の列の値(nth-record.column3.value)を返します。列1と2の値は一意であり、重複しない値の範囲を表します。column3の値は一意ではありません。
これはかなり些細な作業のように思えますが、Clojureのドキュメントやオンラインで見つけた例を使用してそれを行う方法を理解することはできません。レコードを検索して同じレコード内の関連フィールドの値を返すことができる限り、レコードがClojureの内部にどのように格納されているかは私には関係ありません。