str字符串与JSON对象的区别

前言

我们常用json文件存储数据,在写入文件前,通常使用json.dumps函数将python对象转化为字符串再写入文件。但是str函数也可以将字典、
列表等转化为字符串,那么我们在写入json文件时可不可以不import json,直接用str来做呢?答案时不可以的,详见下面事例:
1.当数据类型为str时:

2.当数据类型为json对象时:

从上面图片可以看出str字符串和json字符串不可以混合使用的,它们之间是有本质的区别:

3.我们都知道,使用json.dumps的目的是将python对象转化为字符串,以存储到文件之中。之后需要数据的时候还要从文件中读取,再用json.loads转化为python对象,类似下面这个过程

>>> m = ['a', 'b']
>>> n = json.dumps(m)
>>> n
'["a", "b"]'
 
-----存储入文件,读取文件-----
>>> p = json.loads(n)
>>> p.append('c')
>>> p
['a', 'b', 'c']

4.我们如果用str转化成的字符串,则无法再转化为python对象


>>> m = ['a', 'b']
>>> n = str(m)
>>> n
"['a', 'b']"
>>> json.loads(n)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:Program FilesAnaconda3libjson\__init__.py", line 319, in loads
    return _default_decoder.decode(s)
  File "C:Program FilesAnaconda3libjsondecoder.py", line 339, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:Program FilesAnaconda3libjsondecoder.py", line 357, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 2 (char 1)
原文地址:https://www.cnblogs.com/hghua/p/13142140.html