# cherrypy.lib.jsontools module

cherrypy.lib.jsontools.json_handler(*args, **kwargs)

cherrypy.lib.jsontools.json_in(content_type=['application/json', 'text/javascript'], force=True, debug=False, processor=<function json_processor>)

  Add a processor to parse JSON request entities: The default processor places the parsed data into request.json.

  Incoming request entities which match the given content_type(s) will be deserialized from JSON to the Python equivalent, and the result stored at cherrypy.request.json. The ‘content_type’ argument may be a Content-Type string or a list of allowable Content-Type strings.

  If the ‘force’ argument is True (the default), then entities of other content types will not be allowed; “415 Unsupported Media Type” is raised instead.

  Supply your own processor to use a custom decoder, or to handle the parsed data differently. The processor can be configured via tools.json_in.processor or via the decorator method.

  Note that the deserializer requires the client send a Content-Length request header, or it will raise “411 Length Required”. If for any other reason the request entity cannot be deserialized from JSON, it will raise “400 Bad Request: Invalid JSON document”.

cherrypy.lib.jsontools.json_out(content_type='application/json', debug=False, handler=<function json_handler>)

  Wrap request.handler to serialize its output to JSON. Sets Content-Type.

  If the given content_type is None, the Content-Type response header is not set.

  Provide your own handler to use a custom encoder. For example cherrypy.config[‘tools.json_out.handler’] = <function>, or @json_out(handler=function).

cherrypy.lib.jsontools.json_processor(entity)

  Read application/json data into request.json.