Jonathan Fine wrote:

> Thank you for this suggestion.  The growing adoption of JSON in Ajax
> programming is a strong argument for my using it in my application, although
> I think I'd prefer something a little more binary.
> 
> So it looks like I'll be using JSON.

Well, I tried.  But I came across two problems (see below).

First, there's bloat.  For binary byte data, one average one
character becomes just over 4.

Second, there's the inconvenience.  I can't simple take a
sequence of bytes and encode them using JSON.  I have to
turn them into Unicode first.  And I guess there's a similar
problem at the other end.

So I'm going with me own solution: 
http://mathtran.cvs.sourceforge.net/mathtran/py/bytedict.py?revision=1.1&view=markup

It seems to be related to cerializer:
http://home.gna.org/oomadness/en/cerealizer/index.html

It seems to me that JSON works well for Unicode text, but not
with binary data.  Indeed, Unicode hides the binary form of
the stored data, presenting only the code points.  But I don't
have Unicode strings!

Here's my test script, which is why I'm not using JSON:
===
import simplejson

x = u''
for i in range(256):
     x += unichr(i)

print len(simplejson.dumps(x)), '\n'

simplejson.dumps(chr(128))
===

Here's the output
===
1046  # 256 bytes => 256 * 4 + 34 bytes

Traceback (most recent call last):
  <snip>
   File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode
     return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 0: 
unexpected code byte
===

-- 
Jonathan

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to