Clojure json 比较

Clojure json comparing

在我的一些测试中,我正在比较一些 http 调用之间的 json 结果,今天我只是比较字符串,这太幼稚而且不可靠,例如,如果订单发生变化。 你能推荐一下如何比较两个元素顺序不同的 json 吗:

{
  "k1":"v1",
  "k2":"v2"
}

{
  "k2":"v2",
  "k1":"v1"
}

谢谢 奥德

将 JSON 主体解析为 Clojure 数据结构,例如 cheshire 并比较它们:

(ns my.ns
  (:require 
   [cheshire.core :as json]))

(def body1
  "{\"a\": 1, \"b\": 2}")

(def body2
  "{\"b\": 2, \"a\": 1}")

(= body1 body2)
;; => false

(let [keywordize-keys? true]
  (= (json/decode body1 keywordize-keys?)
     (json/decode body2 keywordize-keys?)))
;; => true