Python:如何将URL编码的bytes类型数据转换为JSON
将Bytes类型的URL编码数据转换为JSON格式
你可以通过以下三步完成转换,Python代码示例如下:
解码Bytes数据为字符串
首先把bytes类型的数据解码成普通字符串,这里用UTF-8编码即可:byte_data = b'ToCountry=US&ToState=WA&SmsMessageSid=SM2c04173b9a5f684be8019e177978c791&NumMedia=0&ToCity=&FromZip=&SmsSid=SM2c04173b9a5f684be8019e177978c791&FromState=&SmsStatus=received&FromCity=&Body=Bbjhggggggg&FromCountry=EE&To=%2B15095121752&ToZip=&NumSegments=1&ReferralNumMedia=0&MessageSid=SM2c04173b9a5f684be8019e177978c791&AccountSid=ACee01b40141d9e1237769375c269f4a76&From=%2B37253055607&ApiVersion=2010-04-01' str_data = byte_data.decode('utf-8')解析URL编码的键值对为字典
使用urllib.parse.parse_qs解析URL编码的字符串,这个方法返回的字典中每个值都是列表(适配同键多值场景),我们可以把单个值的列表转为对应的值:from urllib.parse import parse_qs parsed_data = parse_qs(str_data) # 处理成单个值的字典 normalized_data = {key: value[0] for key, value in parsed_data.items()}将字典转换为JSON字符串
最后用json.dumps把字典转成格式化后的JSON格式:import json json_data = json.dumps(normalized_data, indent=4) print(json_data)
执行以上代码后,你会得到如下JSON输出:
{ "ToCountry": "US", "ToState": "WA", "SmsMessageSid": "SM2c04173b9a5f684be8019e177978c791", "NumMedia": "0", "ToCity": "", "FromZip": "", "SmsSid": "SM2c04173b9a5f684be8019e177978c791", "FromState": "", "SmsStatus": "received", "FromCity": "", "Body": "Bbjhggggggg", "FromCountry": "EE", "To": "+15095121752", "ToZip": "", "NumSegments": "1", "ReferralNumMedia": "0", "MessageSid": "SM2c04173b9a5f684be8019e177978c791", "AccountSid": "ACee01b40141d9e1237769375c269f4a76", "From": "+37253055607", "ApiVersion": "2010-04-01" }
内容的提问来源于stack exchange,提问作者user3073987
相关产品推荐
相关产品推荐

