2016-05-24 4 views
1

私はhttp://clojure.github.io/data.json/read-strを使用して、意味検証のためにswagger(https://openapis.org/specification) 文書を読んでいます。検証するべき事の一つは重複したパスではありません。闊歩ファイルには、二つの "リテラル" は、同一のパスが含まれている場合、クローンのJSONから地図作成中に重複するキーを検出する方法

/foo/{dup}/baz 

しかし:

/foo/{bar}/baz 

はの複製を次のとおりです。たとえば、

/foo/bar/baz : ... 
... 
/foo/bar/baz : ... 

私はread-strを使用し、最後のものが最初のものを「上書き」するので、私は 重複を見ることができません。

重複キーに文句を言うのにclojure.data.jsonを使用する方法はありますか?

他にもライブラリがありますか?

+1

Java interopにドロップして、Jacksonのようなものを使う必要があります。 [ジャンクションで重複するJSON POJOのプロパティとマップキーの検出](http://stackoverflow.com/questions/23781637/jackson-detection-of-duplicate-json-pojo-properties-and-map-keys) –

答えて

1

残念ながら、このライブラリは、ボックスの外にそのレベルでフックを提供しません。個々のキーと個々の値を孤立して検証し、キーがマップ内にあるかどうかを確認できるコンテキストではなく、フックを追加することができます。 assocを呼び出すだけで、デフォルトでClojureの動作が得られます。

(assoc! result out-key out-value) 

あなたはそのプロジェクトにjson.cljからread-object機能をコピーして、result過渡マップにバリデータを追加することができます。しかし、これは脆いでしょう。

+0

ええ、私は':value-fn'を追加しようとしましたが、呼び出されるまでに既に上書きが行われました。 – haroldcarr

関連する問題