【发布时间】:2011-04-29 09:04:26
【问题描述】:
我有一个 Python 字典,我想在 JSON 中序列化并转换为适当的 C 字符串,以便它包含与我的输入字典对应的有效 JSON 字符串。我正在使用结果在 C 源文件中自动生成一行。知道了?这是一个例子:
>>> import json
>>> mydict = {'a':1, 'b': 'a string with "quotes" and \t and \\backslashes'}
>>> json.dumps(mydict)
'{"a": 1, "b": "a string with \\"quotes\\" and \\t and \\\\backslashes"}'
>>> print(json.dumps(mydict))
{"a": 1, "b": "a string with \"quotes\" and \t and \\backslashes"}
我需要生成的是以下C字符串:
"{\"a\": 1, \"b\": \"a string with \\\"quotes\\\" and \\t and \\\\backslashes\"}"
换句话说,我需要在调用 json.dumps(mydict) 的结果上转义反斜杠和双引号。至少我认为我这样做......以下会起作用吗?还是我错过了一个明显的角落案例?
>>> s = '"'+json.dumps(mydict).replace('\\','\\\\').replace('"','\\"')+'"'
>>> print s
"{\"a\": 1, \"b\": \"a string with \\\"quotes\\\" and \\t and \\\\backslashes\"}"
【问题讨论】:
-
您不想在 C 中定义字典。您想要一个可以解析以生成字典的语法为 C 的字符串?为什么不通过将结果存储在文件中并在运行时加载文件来解决整个问题呢?那你就不用逃避了。
-
我不是在 C 中解析它。它是一个嵌入式系统,我将字符串逐字传输到 PC,在那里解析字符串。
-
...实际上它比这更好,它也适用于将字符串存储在符号文件中的 DWARF 指令。我不能在运行时这样做;我的嵌入式系统无法访问文件系统。
标签: python string json escaping