JQコマンドはタイトルのみを検索します。

JQコマンドはタイトルのみを検索します。

このjsonファイルがあります。

"[{\"id\":188457,\"title\":\"Painted Dragon Tea Mug with Lid\",\"slug\":\"painted-dragon-tea-mug-with-lid\",\"image\":\"https:\\\/\\\/thievemedia.imgix.net\\\/2018\\\/09\\\/painted-dragon-tea-mug-with-lid-featured-1.jpg\",\"full_image_url\":\"https:\\\/\\\/s3.amazonaws.com\\\/thieve-media\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/painted-dragon-tea-mug-with-lid-featured-1.jpg\",\"large_image_url\":\"https:\\\/\\\/s3.amazonaws.com\\\/thieve-media\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/painted-dragon-tea-mug-with-lid-featured-1.jpg\",\"medium_image_url\":\"https:\\\/\\\/s3.amazonaws.com\\\/thieve-media\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/painted-dragon-tea-mug-with-lid-featured-1.jpg\",\"original_price\":\"19.78\",\"price\":\"13.65\",\"discount\":\"30.99\",\"rating\":\"4.7\",\"total_orders\":\"10\",\"promotion_url\":\"https:\\\/\\\/api.thieve.co\\\/view?id=MzI4NTk0Njg0MDE=\",\"product_like_count\":\"100\",\"product_user_likes\"}]

jqを使用してタイトルのみを抽出する方法は?

答え1

このクエリは、ドキュメント'.[] | {title}'が次のファイルにあると仮定すると、タイトル要素のみを提供します(ただし、サンプルドキュメントの形式が間違っているように見えます)data.json

$ jq '.[] | {title}' data.json
{
    "title": "Painted Dragon Tea Mug with Lid"
}

クエリの最初の部分は最上位配列'.[]'のすべてのオブジェクトを返し、演算子を使用してこれらのオブジェクトを2番目の部分に送信します|。クエリの2番目の部分は、{title}単にオブジェクトから「タイトル」要素を抽出します。

結果をJSONオブジェクトにラップせずにタイトルを文字列として使用するには、代わりに次のコマンドを使用します。

$ jq '.[] | .["title"]' data.json
"Painted Dragon Tea Mug with Lid"

これjq 地図時間クエリ言語の良い概要を提供します。

答え2

入力が実際のJSON文書をエンコードするJSON文字列であると仮定すると、jqそれを使用して文字列をJSONにデコードし、最上位配列titleの各要素からキー値を抽出できます。

jq -r 'fromjson[]|.title' file

関連情報