Bukdu.jl icon indicating copy to clipboard operation
Bukdu.jl copied to clipboard

Json Payload

Open devnacho opened this issue 6 years ago • 2 comments

Hi @wookay,

I've updated to 0.4.1 but when receiving a JSON payload, it seems like the payload is not being parsed correctly. I followed this example https://github.com/wookay/Bukdu.jl/blob/master/examples/rest/ex2.jl

The JSON payload is something like this:

{
   "simulation":{
      "id":5927,
       "withdrawal_strategy_frequency": 1
   }
}

and it is being parsed to this type

Assoc(Pair{String,Any}["simulation"=>(id = 5927, withdrawal_strategy_frequency = 1))]

Instead of something like:

(simulation = (id = 5927, withdrawal_strategy_frequency = 1)))

Is there any reason why it might happen this?

devnacho avatar Jan 19 '19 20:01 devnacho

~~because the conn.params is a type of Assoc sometimes it's useful with undefined names like~~

~~@info :payload (c.params.message, c.params.x, c.params.y)~~

~~if you want to decode the request body directly, try this way~~

~~using JSON2~~

~~function create(c::RESTController)~~ ~~json = JSON2.read(IOBuffer(c.conn.request.body))~~ ~~@info :json json~~ ~~end~~

wookay avatar Jan 20 '19 00:01 wookay

in Bukdu v0.4.2, you could plug(Plug.Parsers, :json => Plug.ContentParsers.JSONDecoder, parsers=[:json]) see https://github.com/wookay/Bukdu.jl/blob/v0.4.2/examples/rest/ex3.jl

wookay avatar Jan 23 '19 08:01 wookay