[Python-Dev] Dropping bytes "support" in json

"Martin v. Löwis" martin at v.loewis.de
Mon Apr 13 22:02:17 CEST 2009


> Yes, there's a TCP connection.  Sorry for not making that clear to begin
> with.
> 
>     If so, it doesn't matter what representation these implementations chose
>     to use.
> 
> 
> True, I can always convert from bytes to str or vise versa.

I think you are missing the point. It will not be necessary to convert.
You can write the JSON into the TCP connection in Python, and it will
come out just fine as strings just fine in C# and JavaScript. This
is how middleware works - it abstracts from programming languages, and
allows for different representations in different languages, in a
manner invisible to the participating processes.

> At least one of these two needs to work:
> 
> json.dumps({}).encode('utf-16le')  # dumps() returns str
> '{\x00}\x00'
> 
> json.dumps({}, encoding='utf-16le')  # dumps() returns bytes
> '{\x00}\x00'
> 
> In 2.6, the first one works.  The second incorrectly returns '{}'.

Ok, that might be a bug in the JSON implementation - but you shouldn't
be using utf-16le, anyway. Use UTF-8 always, and it will work fine.

The questions is: which of them is more appropriate, if, what you want,
is bytes. I argue that the second form is better, since it saves you
an encode invocation.

Regards,
Martin


More information about the Python-Dev mailing list