New submission from hhas <h...@users.sourceforge.net>:

json.loads() accepts strings but errors on bytes objects. Documentation and API 
indicate that both should work. Review of json/__init__.py code shows that the 
loads() function's 'encoding' arg is ignored and no decoding takes place before 
the object is passed to JSONDecoder.decode()

Tested on Python 3.1.2 and Python 3.2rc1; fails on both. 

Example:

#################################################

#!/usr/local/bin/python3.2

import json

print(json.loads('123'))
# 123

print(json.loads(b'123'))
# 
/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/json/decoder.py:325:
  
#   TypeError: can't use a string pattern on a bytes-like object

print(json.loads(b'123', encoding='utf-8'))
# 
/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/json/decoder.py:325:
  
#   TypeError: can't use a string pattern on a bytes-like object

#################################################

Patch attached.

----------
components: Library (Lib)
files: json.diff
keywords: patch
messages: 126772
nosy: hhas
priority: normal
severity: normal
status: open
title: json.loads() throws TypeError on bytes object
type: behavior
versions: Python 3.1, Python 3.2
Added file: http://bugs.python.org/file20481/json.diff

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue10976>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to