2016-02-28 36 views
10

Ho un array:annodare attraverso una matrice con JQ per JSON (sulla linea di comando)

[ 
    { 
     "AssetId": 14462955, 
     "Name": "Cultural Item", 
     "Description": "It\u0027s... you know... an item. People love items!!!", 
     "AbsoluteUrl": "http://www.roblox.com/Cultural-Item-item?id=14462955", 
     "PriceInRobux": "300", 
     "PriceInTickets": "", 
     "Updated": "3 years ago", 
     "Favorited": "370 times", 
     "Sales": "55", 
     "Remaining": "", 
     "Creator": "ROBLOX", 
     "CreatorAbsoluteUrl": "http://www.roblox.com/users/1/profile", 
     "PrivateSales": "3 Private Sellers", 
     "PriceView": 1, 
     "BestPrice": "666,666,666", 
     "ContentRatingTypeID": 0, 
     "IsServerSideThumbnailLookupInCatalogEnabled": true, 
     "IsLargeItem": false, 
     "IsThumbnailFinal": true, 
     "IsThumbnailUnapproved": false, 
     "ThumbnailUrl": "http://t3.rbxcdn.com/cfbab57cabc6090d078c5f7af403caaa", 
     "BcOverlayUrl": null, 
     "LimitedOverlayUrl": "http://images.rbxcdn.com/793dc1fd7562307165231ca2b960b19a.png", 
     "DeadlineOverlayUrl": null, 
     "LimitedAltText": "Limited", 
     "NewOverlayUrl": null, 
     "SaleOverlayUrl": null, 
     "IosOverlayUrl": null, 
     "XboxOverlayUrl": null, 
     "IsTransparentBackground": false, 
     "AssetTypeID": 8, 
     "CreatorID": 1, 
     "CreatedDate": "\/Date(1250206710313)\/", 
     "UpdatedDate": "\/Date(1340756728887)\/", 
     "IsForSale": true, 
     "IsPublicDomain": false, 
     "IsLimited": true, 
     "IsLimitedUnique": false, 
     "MinimumMembershipLevel": 0 
    }, 
    { 
     "AssetId": 114385498, 
     "Name": "Redspybot", 
     "Description": "How could something so conspicuous be a spy? Beats me! This item was awarded to users who redeemed a ROBLOX card from F.Y.E. in May 2013.", 
     "AbsoluteUrl": "http://www.roblox.com/Redspybot-item?id=114385498", 
     "PriceInRobux": "", 
     "PriceInTickets": "", 
     "Updated": "2 years ago", 
     "Favorited": "218 times", 
     "Sales": "0", 
     "Remaining": "", 
     "Creator": "ROBLOX", 
     "CreatorAbsoluteUrl": "http://www.roblox.com/users/1/profile", 
     "PrivateSales": "2 Private Sellers", 
     "PriceView": 1, 
     "BestPrice": "862,133,799", 
     "ContentRatingTypeID": 0, 
     "IsServerSideThumbnailLookupInCatalogEnabled": true, 
     "IsLargeItem": false, 
     "IsThumbnailFinal": true, 
     "IsThumbnailUnapproved": false, 
     "ThumbnailUrl": "http://t3.rbxcdn.com/173f5636efac35199e40740b3839b3d3", 
     "BcOverlayUrl": null, 
     "LimitedOverlayUrl": "http://images.rbxcdn.com/793dc1fd7562307165231ca2b960b19a.png", 
     "DeadlineOverlayUrl": null, 
     "LimitedAltText": "Limited", 
     "NewOverlayUrl": null, 
     "SaleOverlayUrl": null, 
     "IosOverlayUrl": null, 
     "XboxOverlayUrl": null, 
     "IsTransparentBackground": false, 
     "AssetTypeID": 8, 
     "CreatorID": 1, 
     "CreatedDate": "\/Date(1367270100170)\/", 
     "UpdatedDate": "\/Date(1370113730937)\/", 
     "IsForSale": false, 
     "IsPublicDomain": false, 
     "IsLimited": true, 
     "IsLimitedUnique": false, 
     "MinimumMembershipLevel": 0 
    }, 
    { 
     "AssetId": 29715011, 
     "Name": "American Cowboy", 
     "Description": "...or Cowgirl! You know how to rope in some lookieloos to your America place. Yee haw! Rating prize for the July 4, 2010 Building Contest.", 
     "AbsoluteUrl": "http://www.roblox.com/American-Cowboy-item?id=29715011", 
     "PriceInRobux": "", 
     "PriceInTickets": "", 
     "Updated": "3 years ago", 
     "Favorited": "507 times", 
     "Sales": "0", 
     "Remaining": "", 
     "Creator": "ROBLOX", 
     "CreatorAbsoluteUrl": "http://www.roblox.com/users/1/profile", 
     "PrivateSales": "3 Private Sellers", 
     "PriceView": 1, 
     "BestPrice": "950,000,000", 
     "ContentRatingTypeID": 0, 
     "IsServerSideThumbnailLookupInCatalogEnabled": true, 
     "IsLargeItem": false, 
     "IsThumbnailFinal": true, 
     "IsThumbnailUnapproved": false, 
     "ThumbnailUrl": "http://t2.rbxcdn.com/972ae5b4376523dcfdfdcd16c1cef90d", 
     "BcOverlayUrl": null, 
     "LimitedOverlayUrl": "http://images.rbxcdn.com/793dc1fd7562307165231ca2b960b19a.png", 
     "DeadlineOverlayUrl": null, 
     "LimitedAltText": "Limited", 
     "NewOverlayUrl": null, 
     "SaleOverlayUrl": null, 
     "IosOverlayUrl": null, 
     "XboxOverlayUrl": null, 
     "IsTransparentBackground": false, 
     "AssetTypeID": 8, 
     "CreatorID": 1, 
     "CreatedDate": "\/Date(1277767354190)\/", 
     "UpdatedDate": "\/Date(1277769099607)\/", 
     "IsForSale": false, 
     "IsPublicDomain": false, 
     "IsLimited": true, 
     "IsLimitedUnique": false, 
     "MinimumMembershipLevel": 0 
    }, 
    { 
     "AssetId": 98253651, 
     "Name": "Mahem\u0026#39;s ROBLOX Tablet", 
     "Description": "Winner: Mahem. ROBLOX will be in touch to redeem this prize. Void if sold, traded, or deleted.", 
     "AbsoluteUrl": "http://www.roblox.com/Mahems-ROBLOX-Tablet-item?id=98253651", 
     "PriceInRobux": "90,000", 
     "PriceInTickets": "", 
     "Updated": "3 years ago", 
     "Favorited": "429 times", 
     "Sales": "1", 
     "Remaining": "0", 
     "Creator": "ROBLOX", 
     "CreatorAbsoluteUrl": "http://www.roblox.com/users/1/profile", 
     "PrivateSales": "1 Private Sellers", 
     "PriceView": 1, 
     "BestPrice": "999,999,999", 
     "ContentRatingTypeID": 0, 
     "IsServerSideThumbnailLookupInCatalogEnabled": true, 
     "IsLargeItem": false, 
     "IsThumbnailFinal": true, 
     "IsThumbnailUnapproved": false, 
     "ThumbnailUrl": "http://t7.rbxcdn.com/1dc64223edd569ea698191c86c124928", 
     "BcOverlayUrl": "http://images.rbxcdn.com/4fc3a98692c7ea4d17207f1630885f68.png", 
     "LimitedOverlayUrl": "http://images.rbxcdn.com/d649b9c54a08dcfa76131d123e7d8acc.png", 
     "DeadlineOverlayUrl": null, 
     "LimitedAltText": "Limited Unique", 
     "NewOverlayUrl": null, 
     "SaleOverlayUrl": null, 
     "IosOverlayUrl": null, 
     "XboxOverlayUrl": null, 
     "IsTransparentBackground": false, 
     "AssetTypeID": 19, 
     "CreatorID": 1, 
     "CreatedDate": "\/Date(1353368761747)\/", 
     "UpdatedDate": "\/Date(1355363144050)\/", 
     "IsForSale": true, 
     "IsPublicDomain": false, 
     "IsLimited": false, 
     "IsLimitedUnique": true, 
     "MinimumMembershipLevel": 1 
    } 
] 

desidero ciclicamente ogni oggetto in questa matrice, e scegliere il valore di ogni chiave definito AssetId e console.log() it. Come faccio a farlo usando jq per la riga di comando?

+0

Si prega di renderlo più chiaro se si tratta di un [JQ] domanda o [jquery] domanda. Non sono lo stesso e non dovrebbero essere usati insieme ... La tua domanda è completamente ambigua nel modo in cui l'hai taggata e chiesta. –

risposta

12

Lo strumento da riga di comando jq scrive su STDOUT e/o STDERR. Se si desidera scrivere le informazioni .AssetId su STDOUT, quindi una possibilità potrebbe essere il seguente:

jq -r ".[] | .AssetId" input.json 

uscita:

14462955 
114385498 
29715011 
98253651 

Un incantesimo più robusta sarebbe: .[] | .AssetId? ma la scelta dipenderà cosa vuoi se non c'è una chiave chiamata "AssetId".

+0

Grazie, risposta molto utile! –

+0

Nota: Come potrei inviare ognuno di essi in una funzione? –

+0

Dopo aver provato questo, ho trovato un errore. Dice una stringa inaspettata. –

0

È anche possibile farlo tramite questo comando.

jq ".[].AssetId" input.json 

se di matrice come essere ciò che è nel mio caso

{ 
    "resultCode":0, 
    "resultMsg":"SUCCESS", 
    "uniqueRefNo":"111222333", 
    "list":[ 
     { 
     "cardType":"CREDIT CARD", 
     "isBusinessCard":"N", 
     "memberName":"Bank A", 
     "memberNo":10, 
     "prefixNo":404591 
     }, 
     { 
     "cardType":"DEBIT CARD", 
     "isBusinessCard":"N", 
     "memberName":"Bank A", 
     "memberNo":10, 
     "prefixNo":407814 
     }, 
     { 
     "cardType":"CREDIT CARD", 
     "isBusinessCard":"N", 
     "memberName":"Bank A", 
     "memberNo":10, 
     "prefixNo":413226 
     } 
    ] 
} 

è possibile ottenere il prefixNo con il comando JQ seguito.

jq ".list[].prefixNo" input.json 

Per caso più specifico sulla serie iterazione su JQ è possibile controllare this blogpost