【发布时间】:2019-07-31 19:06:17
【问题描述】:
在我的项目中,我生成了一个 json 文件,这里是一个示例(只有一个索引):
[
{
"aaa": "lklklk",
"bbb": "uiop",
"kkk": "zeez",
"lll": 3,
"_source": {
"element1": "zzzz",
"element2": "eeee",
"element3": "hhhhh",
"element4": "jjjjjj",
"@timestamp": "2019-07-31T08:32:45.000Z",
"element5": "1",
"element6": "6768",
"element7": "gggg",
"element8": "ppppp"
},
{
"aaa": "lklklk",
"bbb": "uiop",
"kkk": "zeez",
"lll": 3,
"_source": {
"element1": "zzzz",
"element2": "eeee",
"element3": "hhhhh",
"element4": "jjjjjj",
"@timestamp": "2019-07-31T08:32:45.000Z",
"element5": "1",
"element6": "6768",
"element7": "gggg",
"element8": "ppppp"
},
]
我用这个命令
var1=$(jq '.['$cpt'] | ._source .element1' file.json)
我可以收到我的价值,但是我收到了这个错误:
jq 错误不能用数字索引数字
我已经尝试过了
var1=$(jq '.[] | ._source .element1' file.json)
但我收到所有数据,我需要按索引接收数据。
这是我的 bash 代码:
while (($verification!=1))
do
elementa[$cpt]=$(jq '.['$cpt'] | ._source .element1' $File.json)
elementb[$cpt]=$(jq '.['$cpt'] | ._source .element2' $File.json)
elementc[$cpt]=$(jq '.['$cpt'] | ._source .element3' $File.json)
elementd[$cpt]=$(jq '.['$cpt'] | ._source .element4' $File.json)
elemente[$cpt]=$(jq '.['$cpt'] | ._source .element5' $File.json)
elementf[$cpt]=$(jq '.['$cpt'] | ._source .element6' $File.json)
elementg[$cpt]=$(jq '.['$cpt'] | ._source .element7' $File.json)
elementh[$cpt]=$(jq '.['$cpt'] | ._source ."@timestamp"' $File.json)
elementi[$cpt]=$(jq '.['$cpt'] | ._source .element8' $File.json)
done
对于每一行我都会收到相同的错误:/ 你知道我为什么会出现这个错误吗?
提前谢谢你。
【问题讨论】:
-
JSON文件中真的有数组吗?它需要像
[ { ... }, { ... }, ...] -
用多个元素显示文件的外观。
-
您好,是的,抱歉,这里是多个元素。我更新了帖子。
-
示例输入仍然是无效的 JSON。您可以使用 jq 来诊断问题 [复数!],但请随意使用在线服务,例如 jsonlint.com :-)