3

Clojure.spec を使用して JSON の構造を検証しています (後で別の形式に変換します)。

(s/def ::yes string?)
(s/def ::my-test (s/keys :req [::yes]))

(def my-json (json/read-json "{\"yes\": \"yes\"}")) ; => {:yes "yes"}

(s/valid? ::my-test my-json)       ; => false
(s/valid? ::my-test {::yes "yes"}) ; => true

(s/explain ::my-test {:yes "yes"})
; => val: {:yes "yes"} fails spec: :spec.core/my-test predicate: 
;         (contains? % :spec.core/yes)

(ここでsclojure.spec名前空間とjsonを参照しますclojure.data.json。)

s/valid?上記のように、キーワードが名前空間化されていないため、解析された JSONの失敗が見られます。

JSON が有効と見なされるようにコードを調整するにはどうすればよいですか?

4

1 に答える 1