Python中使用json.dumps()代替str()保留字典中的双引号
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中使用json.dumps()代替str()保留字典中的双引号相关的知识,希望对你有一定的参考价值。
参考技术A Python里的字典,其键值对使用双引号。当使用str()转换成字符串后,发现双引号变成了单引号,若想要保留双引号,可使用json.dumps()代替str()。
示例:
import json
def main():
dict = "1": "aa", "2": "bb", "3": "cc", "4": "dd"
dict_str = str(dict)
dict_json = json.dumps(dict)
print(dict_str)
print(dict_json)
if __name__ == '__main__':
main()
运行结果:
'1': 'aa', '2': 'bb', '3': 'cc', '4': 'dd'
''1'': ''aa'', ''2'': ''bb'', ''3'': ''cc'', ''4'': ''dd''
Python学习---JSON补充内容[中文编码 + dumps解析]
JSON补充内容[微信解决中文乱码,接上]
import json # 英文显示 dic = {"hello": "world"} str = json.dumps(dic) # type(str) <class \'str\'> str: {"hello": "world"} print("type(str)", type(str), \'str:\', str) # 中文显示 r = {"key": "中国"} st = json.dumps(r) # 序列化后变成字符串,中文变成ascii编码 # type(st) <class \'str\'> st: {"key": "\\u4e2d\\u56fd"} print("type(st)", type(st), \'st:\', st) # 中文bytes处理 b = bytes(st, encoding="utf-8") # type(b): <class \'bytes\'> b: b\'{"key": "\\\\u4e2d\\\\u56fd"}\' # 发送utf-8字节给微信服务器 print("type(b):",type(b), "b:", b) # 解决方案一: 不使用ensure_ascill编码 k = {"key": "中国"} new = json.dumps(k, ensure_ascii=False) print(new) # {"key": "中国"} bb = bytes(new, encoding="utf-8") print(bb) # b\'{"key": "\\xe4\\xb8\\xad\\xe5\\x9b\\xbd"}\' # 解决方案二:先对字典中的msg信息进行占位符处理,然后进行json.dumps[此时是字符串了],接着利用占位符传入msg信息 l = {"key": \'%(msg)s\' } # 注意引号 new1 = json.dumps(l) print(new1) # {"key": "%(msg)s"} new1 = new1 %{\'msg\': \'中国\'} print(new1) # {"key": "中国"} pp = bytes(new, encoding="utf-8") print(pp) # b\'{"key": "\\xe4\\xb8\\xad\\xe5\\x9b\\xbd"}\' \'\'\' 总述: 问题定位: json.dumps()将中文进行了Ascii编码[默认编码]后返回编码后的字符串【\\u4e2d\\u56fd】 bytes()将字符串转变为字节进行发送【\\\\u4e2d\\\\u56fd】 微信接到消息后进行字节byte向字符串str转换,然后发送给前台。即【\\\\u4e2d\\\\u56fd】 --》【\\u4e2d\\u56fd】 --》乱码 问题解决: 1. 不使用ASCII编码,则直接返回中文后进行字节编码 json.dumps(k, ensure_ascii=False) 2. 使用占位符,在json.dumps()后传入msg信息进去 j = j %{"msg": msg} -->此时显示中文 \'\'\'
Json.dumps(cls参数内容以及转换规则)
if cls is None: cls = JSONEncoder +-------------------+---------------+ | Python | JSON | +===================+===============+ | dict | object | +-------------------+---------------+ | list, tuple | array | +-------------------+---------------+ | str | string | +-------------------+---------------+ | int, float | number | +-------------------+---------------+ | True | true | +-------------------+---------------+ | False | false | +-------------------+---------------+ | None | null | +-------------------+---------------+
以上是关于Python中使用json.dumps()代替str()保留字典中的双引号的主要内容,如果未能解决你的问题,请参考以下文章
python中json.loads,dumps,jsonify使用
如何在 Python 中使用 json.dumps() 将整数打印为十六进制字符串
Python中json.dump()和json.dumps()的区别
Python中json文件处理的四个函数json.dumps()json.loads()json.dump()和json.load()的区分
python中的json.dump()和json.dumps()有啥区别?
什么是序列化,Python中json的load,loads,dump,dumps和pickle的load,loads,dump,dumps的区别