Author: Tom Gross


JSON/RPC server for Zope2

Serve JSON-RPC requests from Zope2. 


The product patches the publisher to serve JSON/RPC requests from within Zope2.
It is based on:

 - original product for earlier versions of Zope2 by Balazs Ree
 - jsonserver for zope3 by Jim Washington and Contributors
 - ZPublisher/

JSON is javascript object notation. JSON-RPC performs the same service
as XML-RPC, except the format is javascript script objects instead of
XML, and the content-type is 'application/json-rpc' instead of 'text/xml'.

This project overrides some base zope2 code to provide the additional
functionality of listening and responding properly to requests of type

The product was tested with Zope 2.10 and Zope 2.13


Add this egg to your Zope/Plone buildout.


Similar to xmlrpc usage.

jsonserver looks for content-type "application/json", and handles those
requests as JSON-RPC.  Other http requests are not affected and will
presumably work as expected.

For communication other than in a web browser (javascript), simplejson
or other json implementations have functions for reading and writing
JSON objects.

The text of a JSON-RPC request looks like::



    o jsonid is a string or number that may identify this specific request

    o remotemethod is the method to call on the server

    o methodparams is a list(javascript Array) of parameters to the method

The text of a JSON-RPC response looks like::



    o jsonid is the same jsonid as sent in the request

    o returnedresult is a javascript representation of the result or null

    o returnederr is a javascript representation of an error state

Either returnedresult or returnederr will be the javascript null value.

Actual implementation using e.g., urllib is left as an exercise for the
reader. Hint:  Use the minjson.write(object) and
methods for conversion before and after transport.

Five extensions

The "json" namespace ( defines the
**page** and **pages** directives. **json:page** is identical to
**browser:page** in the usage, but the page or method declared
is allowed to be called up in a json request, but will be
invisible for normal requests.

**browser:page** and **browser:pages** declarations will be
available to both normal and json requests.

**json:page** declarations will be callable from code and
their macros will be visible from other templates. ::



The code of the product can be found at:

Change history

1.2b6 (2013-06-17)

- Plone 4.3 compatibility

1.2b5 (2012-03-21)

- Include zcml files in

1.2b4 (2012-03-21)

- Another fix

1.2b3 (2012-03-21)

- Added and fixed broken egg

1.2b2 (2012-03-20)

- Use simplejson/json instead of minjson implementation

- Allow utf-8 as input encoding only

- Zope 2.13 compatibility

- Fixed issue occured if used with diazo

1.2b1 (2011-10-07)

- fixed content-type with charset
  [tom_gross, thanks Steve Spicklemire]

- changed `has_key` with __contains__ calls

- fixed sending of unauthorized status

- return error object according to the JSON-RPC specification
  [tom_gross, thanks Steve Spicklemire]

1.2a1 (2010-07-15)

- fixes for Zope 2.10 

- moved from old product from