json - 将 JSON 文件中的关键字/值对组合成单个 JSON 以使用 curl 提交
问题描述
我想在“字段”中添加一个数组我该怎么做?
如何添加“字段”数组?
fields=()
for f in NameData/*.json
do
Name= cat $f | jq -r '.[] | .Name'
Value= cat $f | jq -r '.[] | .Value'
fields+= #how?
'{
"name" : "'$Name'",
"value": "'$Value'"
},'
done
#字段输出
{
"name" : "Test"
"value" : "1"
},
{
"name" : "Test2"
"value" : "2"
},
...
因为在旁边发帖
function Hi(){
curl -H "Content-Type: application/json" -X POST -d \
'{
#how to array in fields //while?
"fields": [
{
"name": "Test",
"value":"'1'",
},
{
"name": "Test2",
"value":"'2'",
}
...
]
...
}}
我如何需要提供更多详细信息?你能帮助我吗?谢谢。
我在这里的文件(JSON)就像我正在尝试获取名称和值
xample.json
[
...
{
"folder" : "nobody",
"name": "1TS",
"value": "2",
...
}
]
example2.json
[
{
"name": "TST",
"value": "4.75",
...
}
]
解决方案
Bash 数组只是字符串的集合。可能只是收集键/值对,然后通过将其格式化为 JSON 来完成。
fields=()
for f in NameData/*.json
do
fields+=$(jq -r '.[] | {name: .name, value: .value}' "$f")
done
另请注意,您如何需要命令替换来运行命令并将其输出分配给变量,以及我们如何避免无用cat
的,只需一次jq
调用即可提取两个字段。
但可能更好的解决方案就是jq
直接使用。
curl -H "Content-Type: application/json" -X POST -d "$(
jq -s '{ fields: map({name: .[0].name, value: .[0].value})}' NameData/*.json)"
推荐阅读
- python - IMAP 检索电子邮件
- postgresql - postgresql pod 的 pg_dump 没有终端访问,因为它是一个 prod env
- codenameone - 桌面构建中的 Toastbar
- regex - Apache RewriteRule 使用正则表达式避免循环
- node.js - React w/Kubernetes 部署的 API 给出了 cors 错误
- reactjs - 使用 Selenium Java 从 ReactJS 下拉列表中选择值
- java - 如何在java中反转一系列附加对象
- python - 为什么使用 dblQuotedString 会改变匹配位置?
- node.js - npm 错误!解析“附近”时 JSON 输入意外结束
- python - 从其他 df 列有条件地创建新列