我正在使用http://clojure.github.io/data.json/ read-str
来阅读招摇(https://openapis.org/specification)
用于语义验证的文档。要验证的一件事是没有重复的路径。
例如:
/foo/{bar}/baz
是重复的:
/foo/{dup}/baz
但是,如果swagger文件包含两个“文字”相同的路径:
/foo/bar/baz : ...
...
/foo/bar/baz : ...
当我使用read-str
时,最后一个“覆盖”第一个,所以我看不到
副本 - 它刚刚被删除。
有没有办法使用clojure.data.json
投诉重复的密钥?
或者我可以使用其他库吗?
答案 0 :(得分:1)
不幸的是,没有。该库不提供开箱即用的挂钩。它允许您添加挂钩以单独验证各个键和各个值,而不是在它可以判断键是否已经在映射中的上下文中。它只是调用assoc
,因此默认情况下会获得Clojure行为。
(assoc! result out-key out-value)
您可以从该项目中的json.clj复制read-object
函数,并将验证器添加到result
瞬态映射中。但这会很脆弱。