Requirement:将纯文本转换为JSON格式
输入:
data3 = "{ 'type': 'service_account', 'project_id': 'innate-paratext-90872'}"预期的JSON格式输出:
{
"type": "service_account",
"project_id": "innate-paratext-90872"
}Tried: Method 1
json_str = json.dumps(data3)输出
"{ 'type': 'service_account', 'project_id': 'innate-paratext-90872'}"方法2:
json_str = json.loads(data3)误差
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 5 (char 4)编辑1: Mark给出的解决方案很好,但下面举例说明了一些
data3 = "{'type': 'service_account', 'project_id': 'innate-paratext-90872', 'private_key': '-----BEGIN PRIVATE KEY-----\\nMIIEvgIBADANBgkqhkiG9w0BA\\n-----END PRIVATE KEY-----\\n'}",预期输出:
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BA\n-----END PRIVATE KEY-----\n",您的代码输出:(它去掉了“\n”中的"\“)
"private_key": "-----BEGIN PRIVATE KEY-----nMIIEvgIBADANBgkqhkiG9w0BAn-----END PRIVATE KEY-----n",发布于 2020-08-27 17:52:31
您的字符串是Python源代码格式,因此可以使用ast.literal_eval将其转换为适合json.dumps的真正Python字典。
>>> s = "{ 'type': 'service_account', 'project_id': 'innate-paratext-90872'}"
>>> import ast
>>> d = ast.literal_eval(s)
>>> d
{'type': 'service_account', 'project_id': 'innate-paratext-90872'}
>>> import json
>>> print(json.dumps(d,indent=4))
{
"type": "service_account",
"project_id": "innate-paratext-90872"
}https://stackoverflow.com/questions/63621631
复制相似问题