[英]Using jq to extract information about dependencies from package.json
[英]Extract an information from a JSON file with jq and set the information in a variable
我想從一個名為blablabla.json的JSON文件中提取信息,如下所示:
{ "token": { "issued_at": "2018-11-04T23:35:07Z", "expires_at": "2018-11-05T00:35:07Z", "user": { "id": "ide", "name": "ide" } } }
我想獲取“ expires_at”日期以將其與當前日期進行比較。 為此,我使用以下代碼:
type blablabla.json|jq .token".expires_at"
它有效,但是我不知道如何將其設置為變量。 我嘗試類似的東西:
SET date=type blablabla.json|jq .token".expires_at"
但它什么也沒做。 你有想法嗎?
非常感謝你。
通常,您將使用For /F
循環:
@Echo Off
For /F "Delims=" %%A In ('type blablabla.json^|jq .token".expires_at"'
) Do Set "Expiry=%%~A"
可以使用變量%Expiry%
訪問結果的位置。 (您不會將變量設置為現有的重要系統變量的名稱) 。
至於對照當前日期進行檢查,您需要找到一種方法來執行此操作,因為兩個日期都是字符串,而不是日期對象。 那超出了這個問題的范圍 。
由於以下幾個原因,我將為此使用PowerShell(至少作為一種工具):
這一行PowerShell腳本返回的expedes.at與今天(包括UTC的轉換)相差一天。
(([datetime](Get-Content .\blablabla.json |ConvertFrom-Json).token.expires_at).Date - (Get-Date).date).Days
並且可以輕松地分批包裝。
@Echo off
For /f %%A in ('
powershell -NoP -C "(([datetime](Get-Content .\blablabla.json |ConvertFrom-Json).token.expires_at).Date - (Get-Date).date).Days"
') Do Set "Expires=%%A"
Set Expires
這將(今天)返回:
Expires=0
過去日期為負值,未來日期為正值。
是的,我知道由於多種原因, 不應通過批處理文件來處理.json文件。 但是,如果問題很簡單(如此問題)並且沒有其他限制,則批處理文件解決方案可能是最簡單的解決方案,例如包含日期比較的兩行代碼...
for /F "tokens=2 delims=, " %%a in ('findstr "expires_at" blablabla.json') do set "expires=%%~a"
if %expires:~0,4%%expires:~5,2%%expires:~8,2% geq %date:~6,4%%date:~0,2%%date:~3,2% goto expired
使用Xidel,它非常簡單:
xidel -s blablabla.json -e "$json//expires_at"
這將返回其值: 2018-11-05T00:35:07Z
。
要將其導出為%expdate%
:
FOR /F "delims=" %%A IN ('xidel.exe -s blablabla.json -e "expdate:=$json//expires_at" --output-format=cmd') DO %%A
Xidel還可以以相同格式返回當前日期:
xidel -s blablabla.json -e "$json//expires_at,current-dateTime()"
返回:
2018-11-05T00:35:07Z
2019-01-07T18:26:33.453
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.