如何让Python的json.dumps()转义正斜杠?
如何让Python的json.dumps()转义正斜杠?
在我的JSON文件中,我有一些带有转义的正斜杠的字符串,例如:This is path: \\/home\\/user\\/test.txt
。当我使用Python内置的json.loads()
方法导入时,转义斜杠会被移除。\n这里的评论(链接1)和(链接2)正确地说明,在JSON中,\\/
和/
实际上是相同的,所以这是可以预料的。\n问题是,当我稍后通过json.dumps()
再次导出JSON数据时,我希望这些正斜杠保持转义。我正在处理的JSON文件应尽可能保持不变。\n目前,我在对数据进行所需操作后将JSON写出时使用了一个hack:json_str.replace(\'/\', \'\\/\')
。我觉得这样很丑陋,或者我弄错了吗?有更好的方法吗?\n以下是一个更完整的示例:\n
import json import collections a = r"""{ "version": 1, "query": "This is path: \/home\/user\/test.txt" }""" j = json.loads(a, object_pairs_hook=collections.OrderedDict) print j print json.dumps(j, indent=4, separators=(',', ': ')) print json.dumps(j, indent=4, separators=(',', ': ')).replace('/', '\/')
\n结果为:\n
OrderedDict([(u'version', 1), (u'query', u'This is path: /home/user/test.txt')]) { "version": 1, "query": "This is path: /home/user/test.txt" } { "version": 1, "query": "This is path: \/home\/user\/test.txt" }