Обновление 2019-3-21
Ссылка от @jas содержит комментарий, что «это похоже на YAML» (если за двоеточиями следует пробел).
Я интегрировал новую библиотеку snakeyaml-engine в Библиотеку Tupelo .Документы API здесь .Ответ теперь очень прост:
(ns tst.demo.core
(:use demo.core tupelo.core tupelo.test)
(:require [tupelo.parse.yaml :as yaml] ))
(dotest
(let [data-1 "{ a: 1, b: 'Hello World' }"]
(is= (yaml/parse data-1) {:a 1, :b "Hello World"})))
Старый ответ
Учитывая project.clj
[io.forward/yaml "1.0.9"]
это работает:
(ns tst.demo.core
(:require [yaml.core :as yaml]) )
(def data-1 "{ a: 1, b: \"Hello World\" }" )
(let [result-raw (yaml/parse-string data-1)
result (into {} result-raw)]
с результатом
----------------------------------
Clojure 1.10.0 Java 10.0.1
----------------------------------
Testing tst.demo.core
result-raw => #ordered/map ([:a 1] [:b "Hello World"])
result => {:a 1, :b "Hello World"}
К сожалению, в настоящий момент происходит сбой в Java 11, поскольку зависимая библиотека нуждается в подсказке типа.Вы можете обойти эту проблему, исправив project.clj
:
:dependencies [
[io.forward/yaml "1.0.9" :exclusions [org.flatland/ordered
org.yaml/snakeyaml] ]
[org.yaml/snakeyaml "1.23"]
[org.flatland/ordered "1.5.7"]
[org.clojure/clojure "1.10.0"]
Я подал проблему в проект io.forward/yaml
, чтобы обновить их зависимости.