Project

General

Profile

JysonCompliance » History » Version 2

Alan Kennedy, 2009-03-17 09:15 PM

1 1 Alan Kennedy
h1. Compliance of jyson
2
3 2 Alan Kennedy
{{toc}}
4
5 1 Alan Kennedy
There are two main areas where jyson needs to be compliant.
6
7
h2. RFC 4627
8
9
JSON was originally specified with a simple syntax diagram on "JSON.org":http://json.org
10
11
As JSON became more and more widely used, an internet RFC was published by Douglas Crockford, the original creator of JSON. That document is "RFC 4627":http://www.ietf.org/rfc/rfc4627.txt , which is now the definitive specification for JSON.
12
13
I am currently conducting a review of jyson's compliance with RFC 4627.
14
15
h2. The cpython json module.
16
17
I originally wrote jyson back in 2005, and devised my own API.
18
19
Now, there is a "json module":http://docs.python.org/library/json.html in the cpython standard library, as of version 2.6. Which means that jython will need to have a json module when it reaches version 2.6. This may be achieved by running the pure python version of the json module (the cpython json module relies on C extensions for some of it's speed).
20
21
But the C extensions won't run on jython, meaning that jython will suffer a speed penalty running the existing pure python module.
22
23
If jyson can be made to implement the same API as the cpython json module, then I will contribute the module to jython.
24
25
Here is a list of the main areas in which there are differences between the APIs
26
27 2 Alan Kennedy
h3. Output to file-like objects
28
29
The "cpython json module":http://docs.python.org/library/json.html has facilities for the user to decode from and encode to file-like objects, as well as strings. 
30
31
Jyson only supports decoding from and encoding to strings: how those strings are transcoded for storage or rx/tx over a network is left to user.
32
33
h3. Character encodings
34
35
Because the "cpython json module":http://docs.python.org/library/json.html supports encoding and decoding from file-like objects, it has no choice but to concern itself with character encodings, since file-like objects are byte-oriented.
36
37
Jyson leaves the task of character encoding to the user. For example, the character encoding of a JSON document might be declared in a HTTP header, which is available to the programmer, but not to jyson.
38
39
When JSON was originally created, it contained no specifications for character encoding. However, "RFC 4627":http://www.ietf.org/rfc/rfc4627.txt now contains specifications of how JSON codecs should behave in relation to character encodings, and so jyson will have to the same.
40
41
h3. Incremental support
42
43
The "cpython json module":http://docs.python.org/library/json.html supports for generating JSON documents incrementally, i.e. in a series of smaller parts.
44
45
Jyson was originally written before jython supported generators, and this does not support this usage pattern.