Мой проект анализирует JSON с библиотекой чтения / записи, которая называется:
cheshire.core
У меня возникли проблемы при попытке получить декодирование (функция), поэтому я начал возиться с:
data.json
Мой JSON содержит данные, которые состоят из поля с именем "зона", который содержит вектор с: ключи внутри, вот так {: зона: [: рука: таблица]}, которая хранится в строках внутри вектора, который хранится так: {"зона": ["рука" "таблица"]}
ИтакЯ выяснил, как преобразовать пример данных, используя:
(mapv keyword {"zone" : ["hand"]})
, что было здорово, тогда мне нужно было выяснить, как реализовать декодер для Чешира, я не мог сделать это с помощью своей логики, я толькопотратил на это около часа, но я использовал 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?может это проще?