オブジェクトの配列を持つ、以下のJSON構造を持っています。条件に基づいてJSONオブジェクトをフィルタリングし、JQパーサを使用してフィルタリングされたオブジェクトから少数のキーを選択する方法
私はproduct.type == mobile
条件に基づいてオブジェクトをフィルタリングすると、次に一致するオブジェクトで、私はちょうど
id
と
service
フィールドにしたい。
{
"payload": {
"location": {
"uid": 1,
"type": "foo"
},
"name": "foo",
"maxResults": 10
},
"product": {
"uid": "1232323",
"source": "foo",
"service": "pricing",
"version": "0.1",
"time": 1507602150899,
"type": "mobile",
"id": 1
}
}
{
"payload": {
"location": {
"uid": 2,
"type": "bar"
},
"name": "bar",
"maxResults": 10
},
"product": {
"uid": "244434242",
"source": "bar",
"service": "pricing",
"version": "0.2",
"time": "1507602ds0899",
"type": "phone",
"id": 2
}
}
したがって、上記の例では、以下はO/Pです。
{
"service" : "pricing",
"id" : 1
}
私は
cat myjson.json | jq 'select(.product.type == "moble")'
を使用して、一致するオブジェクトを抽出することができていますが、その後どのように私は、オブジェクトの唯一のservice
とid
フィールドをフィルタリングすることができますか?
あなた 'JSON'入力が構文的に正しくありませんコピーはhttps://jsonlint.com/に貼り付けて自分で見てください – Inian
@Inian、私が言ったように、 'cat myjson.json | jq 'select(.product.type == "moble")' '、私の基準に一致するオブジェクトを取得することができます。 –
あなたは 'moble 'にタイプミスがあり、jsonが修正されない限り、' jq'はそれを解析できません。 – Inian