At some point I wrongly suggested that this might break the moment we get JSON syntax that is not valid Python.  But as we saw in debugging, Jinja _seems_ to interpolate Python dict literals, not JSON, there.  Just to be on the safe side (I remember at some point None being expanded into nothing in a YAML template), we could ask Jinja explicitly for this encoding, like this:

    ptProps = {{ pillar.get('pt_props')|python }}

http://docs.saltstack.com/ref/renderers/all/salt.renderers.jinja.html#variable-and-block-serializers