複雑なjsonファイルが4番目と5番目のレベルにネストされており、以下の結果をjqを使用して取得しようとしています。どんな助けも認められるでしょう:jqを使用して複雑なJSONファイルからシンプルなJSONデータファイルを取得する方法
これは、私がinspecプロファイルを実行した結果として得られるjsonファイルです。実際の目的は、必要な情報を単純なjsonに抽出して、最終的にAWS Redshiftデータベースを更新できるようにすることです。
{
"version": "1.7.1",
"profiles": [{
"name": "java",
"title": "InSpec Java in system",
"maintainer": "awim",
"copyright": "awim/mtaqwim",
"copyright_email": "[email protected]",
"license": "All Rights Reserved",
"summary": "An InSpec Compliance Profile",
"version": "0.0.1",
"supports": [],
"controls": [{
"title": "identify java in system",
"desc": "identify java in PATH system",
"impact": 0.3,
"refs": [],
"tags": {},
"code": "control 'java-1.0' do\n impact 0.3\n title 'identify java in system'\n desc 'identify java in PATH system'\n\n describe java_info do\n it{ should exist }\n its(:version){ should match '1.7'}\n end\nend",
"source_location": {
"ref": "inspec/java/controls/java_1.0.rb",
"line": 6
},
"id": "java-1.0",
"results": [{
"status": "passed",
"code_desc": "java_info should exist",
"run_time": 0.000895896,
"start_time": "2017-01-20 05:04:47 +0000"
}, {
"status": "passed",
"code_desc": "java_info version should match \"1.7\"",
"run_time": 0.067581113,
"start_time": "2017-01-20 05:04:47 +0000"
}]
}, {
"title": "run java from specific path",
"desc": "run java from specific path",
"impact": 1.0,
"refs": [],
"tags": {},
"code": "control 'java-2.0' do\n impact 1.0\n title 'run java from specific path'\n desc 'run java from specific path'\n\n describe java_info(java_path) do\n it{ should exist }\n its(:version){ should match '1.7'}\n end\nend",
"source_location": {
"ref": "inspec/java/controls/java_2.0.rb",
"line": 8
},
"id": "java-2.0",
"results": [{
"status": "skipped",
"code_desc": "java_info",
"skip_message": "Can't find file \"/opt/jdk/current\"",
"resource": "java_info",
"run_time": 1.6512e-05,
"start_time": "2017-01-20 05:04:47 +0000"
}]
}, {
"title": "identify java home",
"desc": "identify java home match to specific path",
"impact": 0.1,
"refs": [],
"tags": {},
"code": "control 'java-3.0' do\n impact 0.1\n title 'identify java home'\n desc 'identify java home match to specific path'\n\n describe java_info(java_path) do\n its(:java_home){ should match java_path}\n end\nend",
"source_location": {
"ref": "inspec/java/controls/java_3.0.rb",
"line": 8
},
"id": "java-3.0",
"results": [{
"status": "skipped",
"code_desc": "java_info",
"skip_message": "Can't find file \"/opt/jdk/current\"",
"resource": "java_info",
"run_time": 6.139e-06,
"start_time": "2017-01-20 05:04:47 +0000"
}]
}],
"groups": [{
"title": "which(UNIX)/where(Windows) java installed",
"controls": ["java-1.0"],
"id": "controls/java_1.0.rb"
}, {
"title": "which(UNIX)/where(Windows) java installed",
"controls": ["java-2.0"],
"id": "controls/java_2.0.rb"
}, {
"title": "which(UNIX)/where(Windows) java installed",
"controls": ["java-3.0"],
"id": "controls/java_3.0.rb"
}],
"attributes": []
}],
"other_checks": [],
"statistics": {
"duration": 0.069669698
}
}
あなたはa)の簡略化JSONへ行くべきかを正確に記述する必要があり、そしてb)その代わりに誰かを期待しての、失敗したどのようにあなたがそれを抽出しようとした方法を示し、あなたのためのコードを書く。 –
@ user5188385 - 安心して、あなたの仕事には最適な選択です。基本を学び、さらに具体的な質問がある場合は、http://のガイドラインに従って、検証可能な最小限の例を提供することをお勧めします。 – peak
最初のコードブロックは、name、title、desc、complex json(2番目のコードブロック内)の結果です。このコードをhttps://jqplay.org/のcomplex jsonで試してみましょう:.profiles [0] .name、.profiles [0] .controls []。title、.profiles [0] .controls []。results [] .status – user5188385