J'ai une structure JSON en dessous, qui possède un tableau d'objets.Comment filtrer un objet JSON en fonction d'une condition, puis sélectionner simplement quelques clés de l'objet filtré à l'aide de l'analyseur JQ
{
"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
}
}
Je veux filtrer l'objet en fonction état, où product.type == mobile
puis dans les objets correspondant, je veux juste les id
et service
champs. Donc, dans l'exemple ci-dessus, ci-dessous serait le O/P.
{
"service" : "pricing",
"id" : 1
}
Je suis en mesure d'extraire les objets correspondants à l'aide du
cat myjson.json | jq 'select(.product.type == "moble")'
mais après comment puis-je filtrer seulement les service
et id
champ d'objet?
Votre 'entrée JSON' est syntaxiquement incorrect , Copiez le coller dans https://jsonlint.com/ et le voir par vous-même – Inian
@Inian, c'est bien comme je l'ai dit, en utilisant le 'chat myjson.json | jq 'select (.product.type == "moble")' ', je suis capable d'obtenir l'objet correspondant à mes critères., JQ fonctionne bien pour cela. –
Vous avez une faute de frappe dans 'moble' et à moins que le json ne soit corrigé,' jq' ne peut pas l'analyser – Inian