iteration - objects - Recorriendo una matriz con jq para JSON(en la línea de comando)
jq play (2)
La herramienta de línea de comandos jq
escribe en STDOUT y / o STDERR. Si desea escribir la información de .AssetId en STDOUT, una posibilidad sería la siguiente:
jq -r ".[] | .AssetId" input.json
Salida:
14462955
114385498
29715011
98253651
Un conjuro más robusto sería:. .[] | .AssetId?
.[] | .AssetId?
pero su elección dependerá de lo que desee si no hay una clave llamada "AssetId".
Tengo una matriz:
[
{
"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
}
]
Me gustaría recorrer cada objeto de esta matriz y seleccionar el valor de cada clave llamada AssetId
y AssetId
console.log()
. ¿Cómo haría esto usando jq para la línea de comandos?
También puedes hacerlo a través de este comando.
jq ".[].AssetId" input.json
Si el conjunto es como el que está en mi 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
}
]
}
puede obtener el prefixNo con el siguiente comando jq.
jq ".list[].prefixNo" input.json
Para un caso más específico sobre la matriz que itera en jq puede consultar este blogpost