无法修复 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 无效?

为 JSONDecodeError 编写循环/异常

CSS如何修复'无效的属性值'

win10刻盘时出现无效的文件句柄如何修复?