Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python“utf8”编解码器无法解码位置0中的字节0xcd:无效的连续字节_Python_Json_Dictionary - Fatal编程技术网

Python“utf8”编解码器无法解码位置0中的字节0xcd:无效的连续字节

Python“utf8”编解码器无法解码位置0中的字节0xcd:无效的连续字节,python,json,dictionary,Python,Json,Dictionary,我正在尝试将下面的“dictionary”x转换为“JSON”。但是我遇到了以下数据是不可JSON序列化的 步骤:1 >>> import json >>> import datetime >>> x={'status': 1, 'MetaInformation': {'create_time': datetime.datetime(2015, 6, 17, 7, 43),'last_saved_by': '\xcd\xf2\xbb\xa7\

我正在尝试将下面的“dictionary”x转换为“JSON”。但是我遇到了以下数据是不可JSON序列化的

步骤:1

>>> import json
>>> import datetime
>>> x={'status': 1, 'MetaInformation': {'create_time': datetime.datetime(2015, 6, 17, 7, 43),'last_saved_by': '\xcd\xf2\xbb\xa7\xcd\xf8\xc2\xe7','author': '\xcd\xf2\xbb\xa7\xcd\xf8\xc2\xe7','last_printed': datetime.datetime(2015, 6, 10, 6, 54), 'last_saved_time': datetime.datetime(2015, 6, 18, 0, 9)}}
>>> json_data=json.dumps(x)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 244, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
  File "/usr/lib/python2.7/json/encoder.py", line 184, in default
    raise TypeError(repr(o) + " is not JSON serializable")
TypeError: datetime.datetime(2015, 6, 10, 6, 54) is not JSON serializable
解决方案:

>>> from bson import json_util
>>> import json
>>> import datetime
>>> x={'status': 1, 'MetaInformation': {'create_time': datetime.datetime(2015, 6, 17, 7, 43),'last_printed': datetime.datetime(2015, 6, 10, 6, 54), 'last_saved_time': datetime.datetime(2015, 6, 18, 0, 9)}}
>>> y=json.dumps(x, default=json_util.default)
>>> print y
{"status": 1, "MetaInformation": {"create_time": {"$date": 1434526980000}, "last_saved_time": {"$date": 1434586140000}, "last_printed": {"$date": 1433919240000}}}
但是,当我仅在步骤2中包含删除的数据以将字典转换为JSON数组时,我确实得到了以下错误

>>> y=json.dumps(x, default=json_util.default)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 251, in dumps
    sort_keys=sort_keys, **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xcd in position 0: invalid continuation byte

我是python的新手。关于将上面的字典x转换为JSON数组的任何帮助都会有所帮助?

datetime.datetime不返回字符串,因此它不能由JSON.dumps处理。要更改它,请使用strdatetime.datetime2015、6、17、7、43

将代码中的datetime.datetimex、x、x、x转换为字符串。e、 g:strdatetime.datetime2015,6,18,0,9尝试对所有字符串使用Unicode,这样json就不必转换它们。
>>> y=json.dumps(x, default=json_util.default)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 251, in dumps
    sort_keys=sort_keys, **kw).encode(obj)
  File "/usr/lib/python2.7/json/encoder.py", line 207, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python2.7/json/encoder.py", line 270, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xcd in position 0: invalid continuation byte