我目前正在 clojure 中做一些 REST API 的工作,我正在使用带有 compojure 的 ring.middleware.format 库将 JSON 转换为 clojure 数据结构和从 clojure 数据结构转换。
我遇到了一个大问题,因为发布到 ring 应用程序的 JSON 将所有数组替换为数组中的第一个项目。IE 它将把这个 JSON 从
{
"buyer":"Test Name",
"items":[
{"qty":1,"size":"S","product":"Red T-Shirt"},
{"qty":1,"size":"M","product":"Green T-Shirt"}
],
"address":"123 Fake St",
"shipping":"express"
}
对此
{
"buyer": "Test Name",
"items": {
"qty": 1,
"size": "M",
"product": "Green T-Shirt"
},
"address": "123 Fake St",
"shipping": "express"
}
它适用于任何数组,包括当数组是根元素时。
我在 clojure 中使用以下代码返回 json:
(defroutes app-routes
(GET "/"
[]
{:body test-data})
(POST "/"
{data :params}
{:body data}))
;{:body (str "Printing " (count (data :jobs)) " jobs")}))
(def app
(-> (handler/api app-routes)
(wrap-json-params)
(wrap-json-response)))
GET 路由对数组和正确输出没有问题,因此它必须是我获取数据的方式或wrap-restful-params
中间件。
有任何想法吗?