Maybe there is a better solution, but serialize seems to do the job.
Instead of json I could pass json_decoded and then serialized parameters.
For example
$jsonval = json_decode('{"foo": "bar"}');
$serialized = serialize($jsonval);
Shortcode will be something like:
[myshortcode parameters="O:8:"stdClass":1:{s:8:"foo";s:3:"bar";}"]
At this point I can handle parameters unserializing them:
function myshortcodehandler($atts){
$arrparameters = (array) unserialize($atts["parameters"]);
...
Seems to work also with array in json.