Python json为API编码字典值

2024-04-26 11:04:04 发布

您现在位置:Python中文网/ 问答频道 /正文

这里是Python初学者

我有一个来自Excel的CSV文件。我想将条目解析为JSON字符串,以便与内部应用程序的API一起使用。在

该脚本使用两个For循环,一个从CSV读取条目并将它们添加到字典中,第二个循环将字典条目中的数据替换为模板字符串,模板字符串通过转换为JSON字符串来正确格式化API请求。在

这是一个填充字典条目的示例-格式与API规范相对应

{'description': 'Mrs Davies 7M3/It', 'resourceId': '16', 'userId': 26, 'accessories': [], 'startReminder': '', 'recurrenceRule': {'monthlyType': 'null', 'interval': 2, 'type': 'weekly', 'weekdays': [1], 'repeatTerminationDate': '2016-05-29T08:50:00'}, 'title': 'Mrs Davies 7M3/It', 'resourceID': '16', 'endDateTime': '2016\xad02\xad22T10:50:00', 'participants': [], 'customAttributes': [], 'endReminder': '', 'startDateTime': '2016\xad02\xad22T09:50:00', 'resources': ['16'], 'invitees': []}

如您所见,startDataTime和endDateTime有一个十六进制值作为连字符符号。在

^{pr2}$

如果我将这个值作为变量(tempData)传递,如下所示

res_data = json.dumps(tempData)

我得到错误

     Traceback (most recent call last):
         File "api.py", line 70, in <module>
           res_data = json.dumps(tempData) 
         File "/usr/lib/python2.7/json/__init__.py", line 243, 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)
         UnicodeDecodeError: 'utf8' codec can't decode byte 0xad in position 4: invalid start byte

这个剧本一直到现在都没有问题。我试着在数据被解析时重新编码json.dumps文件但似乎不起作用。在

有没有办法把数据从字典中编码成utf8?在

提前谢谢。在


Tags: 数据字符串inpyapijsonencoder字典
1条回答
网友
1楼 · 发布于 2024-04-26 11:04:04

看起来您从编码为“Cp1252”的源获取数据 你可以把字典当

data = {1:2, 'endDateTime': '2016\xad02\xad22T10:50:00'.decode('cp1252')}
json.dump(data)
'{"1": 2, "endDateTime": "2016\\u00ad02\\u00ad22T10:50:00"}'

如果您对编码类型不太确定,并且已经有了这样的字符串的字典,那么您可以要求json来处理它-

^{pr2}$

你的代码应该与下面的更改一起工作

res_data = json.dumps(tempData, ensure_ascii=False)

相关问题 更多 >