私は現在、clojure でいくつかの REST API を行っています。また、リング.ミドルウェア.フォーマット ライブラリを compojure と共に使用して、JSON を clojure データ構造との間で変換しています。
私は大きな問題を抱えています.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"
}
配列がルート要素である場合を含め、任意の配列に対してそれを行います。
json を返すために、clojure で次のコードを使用しています。
(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
ミドルウェアを取得する方法のいずれかである必要があります。
何か案は?