Have you experimented with flatten_json?
Here’s a source and example with something I did to bring in logs into my test system.
rule "Random User Data Flatten Json Rule"
// From sample data : https://randomuser.me/api/
// Api input path: *
when
true
then
let sJson = to_string($message.result);
let sJson = regex_replace(
pattern: "^\\[|\\]$",
value: sJson,
replacement: ""
);
let rsJson = flatten_json(to_string(sJson), "flatten");
set_fields(to_map(rsJson));
remove_field("result");
set_field("message", "parsed user data");
end