python3.5和3.6区别 python3.5和python3.6关于json模块的区别

python3.5和python3.6关于json模块的区别

python3.5中

  无法反序列化bytes数据必须decode成str才可以

1

2

3

4

5

6

7

8

9

10

11

12

>>>importjson

>>> a=b'{"username": "xxx"}'

>>> c=json.loads(a)

'''

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 312, in loads

s.__class__.__name__))

TypeError: the JSON object must be str, not 'bytes'

'''

  3.5解决办法:

1

2

3

4

5

6

7

8

9

10

>>> a=b'123'

>>> c=json.loads(a)

Traceback (most recent call last):

File"<stdin>", line1,in<module>

File"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line312,inloads

s.__class__.__name__))

TypeError: the JSONobjectmust bestr,not'bytes'

>>> c=json.loads(a.decode('utf-8'))

>>> c

123

  

python3.6中

  无论bytes类型或者str类型都可以反序列化

1

2

3

4

5

>>>importjson

>>> a=b'{"username": "xxx"}'

>>> c=json.loads(a)

>>> g=b'{"username": "xxx"}'

>>> h=json.loads(g.decode("utf-8"))

  

python3.5中

  无法反序列化bytes数据必须decode成str才可以

1

2

3

4

5

6

7

8

9

10

11

12

>>>importjson

>>> a=b'{"username": "xxx"}'

>>> c=json.loads(a)

'''

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line 312, in loads

s.__class__.__name__))

TypeError: the JSON object must be str, not 'bytes'

'''

  3.5解决办法:

1

2

3

4

5

6

7

8

9

10

>>> a=b'123'

>>> c=json.loads(a)

Traceback (most recent call last):

File"<stdin>", line1,in<module>

File"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/json/__init__.py", line312,inloads

s.__class__.__name__))

TypeError: the JSONobjectmust bestr,not'bytes'

>>> c=json.loads(a.decode('utf-8'))

>>> c

123

  

python3.6中

  无论bytes类型或者str类型都可以反序列化

1

2

3

4

5

>>>importjson

>>> a=b'{"username": "xxx"}'

>>> c=json.loads(a)

>>> g=b'{"username": "xxx"}'

>>> h=json.loads(g.decode("utf-8"))