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