【问题标题】:How do I put a dictionary into JSON without the escape slash如何在没有转义斜杠的情况下将字典放入 JSON
【发布时间】:2017-04-13 22:44:36
【问题描述】:

我不确定我做错了什么。我有一本要转换为 JSON 的字典。我的问题是逃逸 \

如何在没有转义的情况下将字典放入 JSON 中 \

这是我的代码:

def printJSON(dump):
    print(json.dumps(dump, indent=4, sort_keys=True))

data = {'number':7, 'second_number':44}
json_data = json.dumps(data)
printJSON(json_data)

输出是: "{\"second_number\": 44, \"number\": 7}"

我希望输出如下所示: "{"second_number": 44, "number": 7}"

【问题讨论】:

  • 为什么要转储两次数据?第一次转储将数据转为字符串,第二次转储对字符串进行编码,您的意思是printJSON(data)
  • 通过转储字典创建一个字符串 (json_data) -- 然后你在printJSON 内再次将该字符串转储到 JSON -- 转义是正确的......你为什么要转储它两次?
  • 那么您需要将printJSON 函数传递给dict,而不是字符串,这就是您当前正在执行的操作。
  • 感谢 Scott,在您的问题中包含 minimal reproducible example

标签: python json python-3.x dictionary escaping


【解决方案1】:

原因是您将 JSON 数据转储两次。一次在函数之外,另一个在函数内部。供参考:

>>> import json    
>>> data = {'number':7, 'second_number':44}

# JSON dumped once, without `\`
>>> json.dumps(data)
'{"second_number": 44, "number": 7}'

# JSON dumped twice, with `\`
>>> json.dumps(json.dumps(data))
'"{\\"second_number\\": 44, \\"number\\": 7}"'

如果您打印两次转储的数据,您将看到当前得到的数据,即:

>>> print json.dumps(json.dumps(data))
"{\"second_number\": 44, \"number\": 7}"

【讨论】:

  • 是的,这就是问题所在。我想这就是黑客攻击时所期望的
猜你喜欢
  • 2015-09-14
  • 2013-01-23
  • 2019-10-07
  • 2011-07-15
  • 1970-01-01
  • 2020-03-11
  • 1970-01-01
  • 2022-07-04
  • 1970-01-01
相关资源
最近更新 更多