Phoenix automatically wraps array request inside a _json
field and make it an object. eg I am sending below body
[
{
"activity_model_id": "{{activity_model_id}}",
"context": "scan shop ABC",
"card_id": "{{card_id}}"
},
{
"activity_model_id": "{{activity_model_id}}",
"context": "checking home",
"card_id": "{{card_id}}"
}
]
when I inspect/print raw body via a middleware(just for debugging purpose), raw body is correct and matched which is
" [\n {\n \"activity_model_id\": \"{{activity_model_id}}\",\n \"context\": \"scan shop ABC\",\n \"card_id\": \"73c0da33-89d1-4f2f-9af1-3e282c3a9606\"\n },\n {\n \"activity_model_id\": \"{{activity_model_id}}\",\n \"context\": \"checking home\",\n \"card_id\": \"73c0da33-89d1-4f2f-9af1-3e282c3a9606\"\n }\n]"
But what I actually see in the logs which is being sent to controllers is
Parameters: %{"_json" => [%{"activity_model_id" => "{{activity_model_id}}", "card_id" => "73c0da33-89d1-4f2f-9af1-3e282c3a9606", "context" => "scan shop ABC"}, %{"activity_model_id" => "{{activity_model_id}}", "card_id" => "73c0da33-89d1-4f2f-9af1-3e282c3a9606", "context" => "checking home"}]}
You can see, just before sending body to params, extra _json
field is introduced from somewhere.
I also have this config:
config :phoenix, :json_library, Jason
So either this field is introduced by Jason or phoenix itself. currently having no clue, how to get correct request without _json field in controllers. any help is really appreciated. Thanks