К сожалению, пример ввода неверен JSON, и кажется, что вывод, как показано, не соответствует описанию проблемы. Здесь, однако, есть решение проблемы, как заявлено, с входным значением выборки JSON, близко соответствующим данному образцу, вместе с соответствующим выходным сигналом. Надеемся, что если вы пересмотрите свои требования, вы легко сможете соответствующим образом изменить программу.
paths as $p
| getpath($p) as $v
| select($v | scalars)
| select( $p[-1] | (type == "string") and (test("^key[0-9][0-9]$")|not))
| "\($p[-1]):\($v)"
Пример ввода
{
"root": {
"parent": "57g1"
},
"start": {
"key00": "011",
"key01": "57",
"key005": "1616.0",
"key11010": [
[
" ",
[
"element",
"90-76871-10-8"
]
]
],
"key9100": [
[
" ",
[
"element",
"20890"
]
]
],
"keya1": [
[
"0 ",
[
"element",
"dut"
]
]
],
"key8102": [
[
" ",
[
"element",
"AN"
]
]
],
"key8": [
[
" 0",
[
"element",
"987"
],
[
"87",
"o/ 0"
],
[
"3",
"09"
],
[
"8",
"9847"
]
],
[
" 1",
[
"element",
"488"
],
[
"4",
"897"
],
[
"7",
"9"
]
]
]
}
}
{
"root": {
"parent": "57d1"
},
"start": {
"key001-no": "0500",
"key001": "57ec001",
"key1105": "6.0",
"key77010": [
[
" ",
[
"element",
"978-605-377-046-6"
]
]
],
"key7800": [
[
" ",
[
"element",
"201jh"
]
]
],
"key18701": [
[
" 0",
[
"element",
"99"
],
[
"ik",
"767"
],
[
"88",
"28"
],
[
"87",
"jkh"
]
],
[
" 1",
[
"element",
"98"
],
[
"gh",
"87"
],
[
"hg",
"8"
]
]
]
}
}
Соответствующий вывод
"parent:57g1"
"key005:1616.0"
"parent:57d1"
"key001-no:0500"
"key001:57ec001"
"key1105:6.0"