@oskarsh @hisefilo
I figured out a way to solve this (sort of, a better method would be a new scripting call for the Server API, something like Server.callWithPostRawJSON).
Most of where you want to look is the GlobalServer.cpp file here
If you are looking for a quick fix you can try editing line 273 of the GlobalServer.cpp script:
for(const auto& v: d->getProperties())
isComplexObject |= v.value.isArray() || v.value.getDynamicObject() != nullptr;
// if(isComplexObject) remove this line
if (true) // add this line
{
extraHeader = "Content-Type: application/json";
url = url.withPOSTData(JSON::toString(parameters, true));
}
else
{
for (auto& p : d->getProperties())
url = url.withParameter(p.name.toString(), p.value.toString());
I think what happens is that when your JSON objects contain only simple properties (strings, numbers, booleans), HISE will treat it as a simple object and URL-encodes the parameters. So modifying the isComplexObject will just push the JSON data for all objects now (which could cause more issues down the line).
I'll post here again once I figure out a better/more robust solution.