我的项目使用读/写库解析 JSON,称为:
我遇到了问题,试图让解码(func)工作,所以我开始搞乱:
我的 JSON 包含由名为“zone”的字段组成的数据,其中包含一个带有 :keys 的向量,例如 {:zone : [:hand :table]} 存储在向量中的字符串中,如下所示:{“zone " : ["手" "桌子"]}
所以我想出了如何使用以下方法转换示例数据:
(mapv keyword {"zone" : ["hand"]})
太好了,然后我需要弄清楚如何为 cheshire 实现解码器,我的逻辑无法做到这一点,我只花了大约一个小时的时间,但我一直在使用 data.json 和解码器我认为功能相对容易。
我让我的项目开始工作,这里是一些示例代码:
(ns clojure-noob.core (:require
[cheshire.core :refer [decode]]
[clojure.data.json :as j-data]
) (:gen-class))
(defn -main
"I don't do a whole lot ... yet."
[& args]
)
这是使用柴郡:
(let [init (decode "{\"zone\" : [\"hand\"]}" true
(fn [field-name]
(if (= field-name "zone")
(mapv keyword [])
[])))]
(println (str init)))
这是使用data.json:
(defn my-value-reader [key value]
(if (= key :zone)
(mapv keyword value)
value))
(let [init (j-data/read-str
"{\"zone\" : [\"hand\"]}"
:value-fn my-value-reader
:key-fn keyword)]
(println (str init)))
我想从控制台得到这两个的底部结果:
{:zone ["hand"]}
{:zone [:hand]}
问题是我想使用 cheshire ps 我正在阅读 cheshire 的工厂部分吗?也许这更容易?