以下に示す Json 文字列では、カテゴリ = m であり、「中間」配列にこの条件に一致する要素が含まれているすべての要素を検索したいと考えています。要素の「中間」配列には、itemType = Executable のオブジェクトがあります。
jsonpath を使用して目的のオブジェクトを取得したいと思います。jmespath は私の目的には複雑すぎる可能性があるため、使用しないことを好みます。しかし、私はjsonpathを初めて使用し、あまりにも単純または基本的なオンラインチュートリアルからjsonクエリを理解できません。必要なデータを取得するには、代わりにプログラミング言語を使用する方がよいのではないかと思います。お知らせ下さい。
これまでのところ、この jsonpath query を使用して、カテゴリ = m の要素のみを抽出できました$.[?(@.category=="m")]
。残りの部分はどうすればいいですか?
Json : 概要 - すべてのオブジェクトには「コンテンツ」オブジェクトがあります。通常、各コンテンツ オブジェクトには、他のフィールドに加えて、開始、中間、および終了の配列があります。中間の配列は、その中に複数のコンテンツ オブジェクトを持つことができます。一部のコンテンツ オブジェクトには、中央の配列しかありません。上記のようなコンテンツ オブジェクトでアイテムを検索することに興味があります。
これは、私が処理しなければならない実際の json ではないことに注意してください。SO除菌済みの模造品です。
{
"id": "123",
"contents": {
"title": "B1",
"start": [],
"middle": [
{
"level": "1",
"contents": {
"title": "C1",
"category": "c",
"start": [],
"middle": [
{
"level": "2",
"contents": {
"title": "M1",
"category": "m",
"start": [],
"middle": [
{
"level": "3",
"contents": {
"title": "MAT1",
"middle": [
{
"itemType": "Data"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT2",
"middle": [
{
"itemType": "Executable",
"id": "exec1"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT3",
"middle": [
{
"itemType": "Data"
}
]
}
}
],
"end": []
}
},
{
"level": "2",
"contents": {
"title": "M2",
"category": "m",
"start": [],
"middle": [
{
"level": "3",
"contents": {
"title": "MAT1",
"middle": [
{
"itemType": "Data"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT2",
"middle": [
{
"itemType": "Executable",
"id": "exec2"
}
]
}
}
],
"end": []
}
}
],
"end": []
}
},
{
"level": "1",
"contents": {
"title": "C2",
"category": "c",
"start": [],
"middle": [
{
"level": "2",
"contents": {
"title": "M1",
"category": "m",
"start": [],
"middle": [
{
"level": "3",
"contents": {
"title": "MAT1",
"middle": [
{
"itemType": "Data"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT2",
"middle": [
{
"itemType": "Executable",
"id": "exec3"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT3",
"middle": [
{
"itemType": "Data"
}
]
}
}
],
"end": []
}
},
{
"level": "2",
"contents": {
"title": "M2",
"category": "m",
"start": [],
"middle": [
{
"level": "3",
"contents": {
"title": "MAT1",
"middle": [
{
"itemType": "Data"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT2",
"middle": [
{
"itemType": "Executable",
"id": "exec4"
}
]
}
},
{
"level": "3",
"contents": {
"title": "MAT3",
"middle": [
{
"itemType": "Data"
}
]
}
}
],
"end": []
}
}
],
"end": []
}
}
],
"end": []
}
}