我想找一个人的名字谁有一个主题和它的分数。但我得到的是索引数组。这个问题与在Stackoverflow上提出的其他问题不同,因为它对不在[]中而在{}中的参数抛出错误
jq -r '.[] | select(.result."*value*".Score.English) | {Name: .result."*value*".name, Subject: .result."*value*".Score.English} | @text' test.txt | sed 's/^{\|}$//g; s/,/\n/'
输入JSON文件
[{
"host": "testserver",
"hostclass": "Unknown",
"result": {
"*value*": [
{
"sessionId": "000001",
"name": "ABC",
"Age": "21",
"Score": {
"English": "A+",
"Mathematics": "B-",
"String Theory": "C+"
}
},
{
"sessionId": "000001",
"name": "CDE",
"Age": "21",
"Score": {
"English": "A-",
"German": "B-",
"French": "C+"
}
},
{
"sessionId": "000001",
"name": "EFG",
"Age": "21",
"Score": {
}
},
{
"sessionId": "000001",
"name": "XYZ",
"Age": "21"
}]
}
}]
输出:
Name: ABC
Subject : A+
Name: CDE
Subject : A-
错误:
jq: error (at test.txt:39): Cannot index array with string "Score"
如何修复此错误?
发布于 2019-05-08 01:23:29
$ jq -r '.[].result."*value*"[] | select(.Score.English) | "Name: \(.name)", "Subject: \(.Score.English)"' file
Name: ABC
Subject: A+
Name: CDE
Subject: A-
发布于 2019-05-08 01:26:56
EFG Score的长度为0,这可能没有帮助:
"sessionId": "000001",
"name": "EFG",
"Age": "21",
"Score": {}
因此,当尝试评估时,它会卡住:
Subject: .result."*value*".Score.English
https://stackoverflow.com/questions/56027278
复制相似问题