Obecnie robię pewne rzeczy z API REST w clojure i używam biblioteki ring.middleware.format z compojure do transformacji JSON do struktur danych clojure.Clojure ring wrap-json-params psuje tablice JSON
Mam ogromny problem, w tym i JSON wysłany do aplikacji pierścienia będzie miał wszystkie tablice zastąpione pierwszym elementem, który był w tablicy. TO ZNACZY. okaże się to JSON pisał do niego z
{
"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"
}
do tego
{
"buyer": "Test Name",
"items": {
"qty": 1,
"size": "M",
"product": "Green T-Shirt"
},
"address": "123 Fake St",
"shipping": "express"
}
robi to dla dowolnych macierzy, w tym gdy tablica jest elementem głównym.
Używam następujący kod w Clojure zwrotu 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)))
Trasa GET ma żadnych problemów z tablicami i wyjść prawidłowo, więc to musi być droga jestem coraz danych lub oprogramowanie pośredniczące wrap-restful-params
.
Wszelkie pomysły?
Dzięki! To działało świetnie. To nie jest idealne rozwiązanie, ale działa. –
Świetnie. Zgadzam się, że to nie jest najlepsze rozwiązanie. Rozwidlałem repozytorium ring-json-params i spróbuję rozwiązać problem. –
Czy kiedykolwiek doszedłeś do sedna tego? Znalazłem podobny problem w formacie ring-middleware i otworzyłem problem: https://github.com/ngrunwald/ring-middleware-format/issues/15 – noahlz