json - 是否有修复此表达式以正确获取键值对
问题描述
我有这个 python 脚本,它以原始字符串格式打印这个输出。
{"A":"ab3241c","B":"d12e31234f","c":"[g$x>Q)M&.N+v8"}
我正在使用 jq 来设置 A、B 和 c 的值
像这样的东西
expression='. | to_entries | .[] | .key + "=\"" + .value + "\""'
eval "$(python script.py | jq -r "$expression")"
这很好用A和B。当我做类似的事情时
echo $A
ab3241c
但问题在于 c 我得到的输出为
[g\u003eQ)M\u0026.N+v8
所以 $x> 和 & 正在转换为 unicode。我可以修复表达式以避免这种情况吗?
我使用表达式修复它
expression='to_entries | map("\(.key)=\(.value | @sh)") | .[]'
解决方案
在这里使用eval
就像在脚上射击自己。
为什么不直接将 python 命令的输出传递给 jq 命令呢?
考虑:
function mypython {
cat <<"EOF"
{"A":"ab3241c","B":"d12e31234f","c":"[g$x>Q)M&.N+v8"}
EOF
}
expression='to_entries[] | .key + "=\"" + .value + "\""'
mypython | jq -r "$expression"
请注意,expression
在这里使用似乎也毫无意义。一般来说,最好是“内联”它,或者将它放在一个文件中并使用 jq 的 -f 命令行选项。
(另请注意,expression
不需要您的第一个“。”。)
推荐阅读
- android - Android在片段和对话框片段之间共享ViewModel?
- python - 有没有办法根据xml信息编写代码编写代码?(Python)
- android - Opengl ES2 Android经常在Texture中改变颜色
- java - 将数据从 ItemListener 中的事件存储到 ArrayList
- typescript - 允许接口隐式转换为 JsonData
- django - HttpResponseRedirect 不会将编辑页面重定向到另一个显示 Django 编辑结果的页面
- android - ThumDrawable 在 SeekBar 中的行为如何?
- javascript - 我可以在遍历数组时设置不同的 Date.now() 时间吗?
- tfs - TFVC:在 vnext 构建期间删除工作区失败
- css - JustifyContent:React 网格中的“中心”