我正在使用python创建一个CDK堆栈。这里我将json对象导出到linux环境中,因为这是一个clodebuild步骤。
f"export SHARED=\"{json.dumps(shared)}\""
使用\"
的唯一原因是我在json对象中得到了一个空格错误。
当我尝试导入环境对象并将其作为json加载时,我得到的json对象没有""
。
{
mts:{
account_id:11111,
workbench:aaaaa,
prefix:rad600-ars-sil,rad600-srr-sil-stage1,rad600-srr-sil-stage2
},
tsf:{
account_id:22222,
workbench:bbbbb,
prefix:yyyy
}
}
使用下面的对象时,加载不工作,并发出错误,状态为json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes
SHARED = json.loads(os.environ["SHARED"])
我是否遗漏了什么或者有更好的方法将json对象作为环境变量发送?
3条答案
按热度按时间uxhixvfz1#
使用64进制
一个简单的方法是首先将json字符串编码为base64。
然后在另一端:
此技术也适用于任意二进制数据。
使用shlex.引号
另一种方法是使用
shlex.quote
为shell命令正确地引用json字符串。sxpgvts32#
这很傻,但这起作用了。
我不太清楚它内部是怎么运作的
与
成功了!
我觉得在访问变量
os.environ["SHARED"]
时,它使""
无效,因为整个对象本身包含""
,通过添加'
,该对象周围包含"
,它能够更好地区分。只是一个理论!!!
3xiyfsfu3#