无法修复 JSONDecodeError:无效的控制字符
Posted
技术标签:
【中文标题】无法修复 JSONDecodeError:无效的控制字符【英文标题】:Can't fix JSONDecodeError: Invalid control character 【发布时间】:2019-04-23 20:28:58 【问题描述】:我有一个包含以下内容的 json 文件:
#create test.json and add content
dbutils.fs.put("test.json",'"type": "abc","project_id": "abc","private_key_id": "123","private_key": "-----BEGIN PRIVATE KEY----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCJ05O/Ke3tGA96\n-----END PRIVATE KEY-----\n","client_email": "abc@gmail.com","client_id": "345","auth_uri": "https://accounts.abc.com/o/oauth2/auth","token_uri": "https://abc","auth_provider_x509_cert_url": "https://abc","client_x509_cert_url": "https://abcrobot/v1/metadata/x509"'
#Read test.json
json.loads(test.json)
#Error
JSONDecodeError: Invalid control character
我做错了什么?
【问题讨论】:
您错误地使用了json.loads
方法。见herewith open('test.json','r') as json_file: json.loads(json_file)
好像在-----END PRIVATE
之后漏掉了一个"
,应该是'"private_key": "--END PRIVATE" '
而不是'"private_key": "--END PRIVATE'
@P3qiUB 缺少 " 是由于我的复制和粘贴错误,但实际脚本有正确的引用。因此,您的建议不起作用。
您的 JSON 无效;创建字典并使用json.dumps
生成它。
问题在于 Python 将 \n
视为文字换行符,它不能出现在 JSON 中。
【参考方案1】:
不要手动生成 JSON;让json.dumps
为你做这件事。这将确保出现在私钥中的换行符被正确编码。
config =
"type": "abc",
"id": "t1-2-3",
"private_key_id": "123",
"private_key": "-----BEGIN PRIVATE KEY----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwkO/V+WyyrmTFVFoDN9sN1+AL+KX/IB3y\nZqLJVPGCdQ1l+TlZXbFKFYMwo/Ca4N8g4sy7ZH/9UcqKTxawyqrh7dPcRWWI\nyvAWaEJVCtZhw+Hp4fkmWdoi\n-----END PRIVATE"
dbutils.fs.put("test.json", json.dumps(config))
with open("test.json") as f:
config2 = json.load(f)
【讨论】:
【参考方案2】:当这种情况发生时,找出问题所在的一种简单方法是使用 JSON 验证器,例如 this one。
在这种情况下,您缺少 "
和字符串的结尾,这是正确的方法:
dbutils.fs.put("test.json",'"type": "abc","id": "t1-2-3","private_key_id":"123","private_key": "-----BEGIN PRIVATE KEY----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwkO/V+WyyrmTFVFoDN9sN1+AL+KX/IB3y\nZqLJVPGCdQ1l+TlZXbFKFYMwo/Ca4N8g4sy7ZH/9UcqKTxawyqrh7dPcRWWI\nyvAWaEJVCtZhw+Hp4fkmWdoi\n-----END PRIVATE" '
【讨论】:
我用过这个工具,谢谢。但是,即使修复了问题,同样的错误仍然存在。为什么/以上是关于无法修复 JSONDecodeError:无效的控制字符的主要内容,如果未能解决你的问题,请参考以下文章
如何修复 Magento 中的错误“无法建立 FTP 连接,无效的主机或端口”
Google Play 游戏服务错误:无法登录 - 应用程序没有注册的客户端 ID?其他修复无效
如何修复 DOMException:无法在“XMLHttpRequest”上执行“打开”:调用第三方服务器/api 时 URL Angular HttpClient 无效?