如何让Python的json.dumps()转义正斜杠?

9 浏览
0 Comments

如何让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"
}

0