【发布时间】:2020-12-07 12:16:11
【问题描述】:
我尝试从 python 中的变量创建 JSON 字符串,但我得到了奇怪的行为
当我对 pro 对象进行硬编码时,此结果格式良好:
rev_= 'Package ID: bbbbb\nBuild\nnumber: 154\nBuilt\n'
s_ver_str_ = 'bbb.bbb.3.3.98'
result = json.dumps({"rev": rev_, "s_ver_str": s_ver_str_, "pro": {'message': 'no verstion found'}})
但是当我尝试将 pro 对象设置为变量时会返回错误:
rev_= 'Package ID: bbbbb\nBuild\nnumber: 154\nBuilt\n'
s_ver_str_ = 'bbb.bbb.3.3.98'
pro_ = "'message': 'no verstion found'"
result = json.dumps({"rev":rev_,"s_ver_str":s_ver_str_,"pro": { pro_ }})
收到此错误:
Traceback (most recent call last):
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.2\plugins\python-ce\helpers\pydev\pydevd.py", line 1434, in _exec
pydev_imports.execfile(file, globals, locals) # execute the script
File "C:\Program Files\JetBrains\PyCharm Community Edition 2019.3.2\plugins\python-ce\helpers\pydev\_pydev_imps\_pydev_execfile.py", line 18, in execfile
exec(compile(contents+"\n", file, 'exec'), glob, loc)
File "C:/Dev/python/new_tester/simple_main.py", line 19, in <module>
result = json.dumps({"rev":rev_,"s_ver_str":s_ver_str_,"pro": { pro_ }})
File "C:\Python36-64\lib\json\__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
File "C:\Python36-64\lib\json\encoder.py", line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File "C:\Python36-64\lib\json\encoder.py", line 257, in iterencode
return _iterencode(o, 0)
File "C:\Python36-64\lib\json\encoder.py", line 180, in default
o.__class__.__name__)
TypeError: Object of type 'set' is not JSON serializable
【问题讨论】:
-
"pro": { pro_ }{}周围的pro_把它变成一个集合。
标签: python json python-3.x