我有这个JSON:
{
"blocks" : {
"xrb_1111111111111111111111111111111111111111111111111117353trpda": {
"142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D": "6000000000000000000000000000000"
},
"xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": {
"4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74": "106370018000000000000000000000000"
}
}
我在使用jq
中的bash
进行读取时遇到了麻烦:
xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3
我尝试在jqplay上执行此操作,但是运气不佳。
我尝试使用jqplay来获取结果并管理查找,但是当它以这种方式嵌套时却没有。
答案 0 :(得分:1)
此jq
脚本可能对您有用:
$ cat file
{
"blocks": {
"foo_b": {
"aaa": "bbb"
},
"bar_b": {
"ccc": "ddd"
}
}
}
$ jq -r '.blocks | to_entries[].key' file
foo_b
bar_b
答案 1 :(得分:1)
keys_unsorted
给出了一组键。地点:
jq -r '.blocks | keys_unsorted[]' input.json
xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3
答案 2 :(得分:0)
首先,您的JSON无效。它缺少右括号。
$ cat input.json
{
"blocks": {
"xrb_1111111111111111111111111111111111111111111111111117353trpda": {
"142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D": "6000000000000000000000000000000"
},
"xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": {
"4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74": "106370018000000000000000000000000"
}
}
}
如果您愿意使用jq
以外的其他工具,那么我建议您使用瑞士刀工具Xidel。
点符号:
$ xidel -s input.json -e '($json).blocks()'
XPath表示法:
$ xidel -s input.json -e '$json/(blocks)()'
两者都带有输出:
xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3