gpt4 book ai didi

json - 使用jq添加JSON对象时如何防止转义?

转载 作者:行者123 更新时间:2023-12-02 00:16:13 26 4
gpt4 key购买 nike

我正在使用 jq,我正在尝试将新的 JSON 对象添加到现有文件的新 key 中。

我有以下 JSON 文件,foobarbaz.json:

{
"example":{
"name": "stackOverflowQuestion"
}
}

我想在示例下添加一个新条目,以便在 foobar.json

中获得以下输出
{
"example": {
"name": "stackOverflowQuestion",
"new": {
"newfield": {
"key": "value"
}
}
}
}

我在终端中使用以下命令:

$ tempvar='{"newfield":{"key":"value"}}'
$ cat foobarbaz.json | jq '.example.new=env.tempvar' > foobar.json

但是,foobar.json 中的输出有些出乎意料:

{
"example": {
"name": "stackOverflowQuestion",
"new": "{\"newfield\":{\"key\":\"value\"}}"
}
}

为什么jq要用引号把大括号括起来,为什么要转义双引号?

最佳答案

使用 fromjson 将字符串(所有 环境变量的格式!)转换为相应的数据结构,将其解码为 JSON 内容。

tempvar='{"newfield":{"key":"value"}}' jq '.example.new=(env.tempvar | fromjson)' <<'EOF'
{
"example":{
"name": "stackOverflowQuestion"
}
}
EOF

...作为输出发出:

{
"example": {
"name": "stackOverflowQuestion",
"new": {
"newfield": {
"key": "value"
}
}
}
}

关于json - 使用jq添加JSON对象时如何防止转义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56878409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com