After review, I don't believe this is a feature we would encourage.
Wojciech, it isn't clear to me how you're managing the run list currently. If the json file is stored on a web server and copied to a host as part of its build out, why not put that run list in a role and add these nodes to that role, and then just manage the node?
If there's an unavoidable reason for having the json run_list predefined, why not have an initial cookbook that updates the node with the most recently run_list from somewhere like a data bag? (I don't really like this, I'm just putting together ideas.)
One use case that has been brought up in the past is a situation where you would hard code the cron job into a disk image so that if a new node was brought up with that disk image it would already be configured, but the same can be done using -j and a first_boot file.
CHEF-2988 added the ability to use a temporary run list with --override-runlist. Which allows you to set a temporary run list for a single run.
The JSON isn't really meant as a human interface. If there's a place where you have to deal with JSON we should fix that and we should discourage situations like this where the user has to jump through escaping hoops to provide JSON using an interface where it is unnatural, like the shell.