cherrypy.lib.jsontools

Functions

cherrypy.lib.jsontools.json_processor(entity)

Read application/json data into request.json.

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

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”.

You must be using Python 2.6 or greater, or have the ‘simplejson’ package importable; otherwise, ValueError is raised during processing.

cherrypy.lib.jsontools.json_handler(*args, **kwargs)
cherrypy.lib.jsontools.json_out(content_type='application/json', debug=False, handler=<function json_handler at 0x7f2b82556b18>)

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).

You must be using Python 2.6 or greater, or have the ‘simplejson’ package importable; otherwise, ValueError is raised during processing.