簡體   English   中英

如何使用shell jq動態解析JSON對象

[英]How to dynamically parse a JSON object with shell jq

我有一個關於shell的jq的問題。 所以我的JSON對象是:

{"1543446000": {"name": "John", "company": "foo"}, "1543359600": {"name": "Kate", "company": "bar"}}

numers 15434460001543359600是UNIX時間戳。 如何通過shell變量的時間戳解析其中一個JSON對象?

到目前為止我的shell腳本:

#!/bin/sh
URL="https://pastebin.com/raw/w7awz7kZ"
export DATE=$(date -d "$today 0" +%s)
JSON=$(curl -H "Accept: application/json" $API_URL)
JSON=$(echo $JSON | jq --arg date $DATE '.$date')
echo $JSON

似乎沒有用。 我的目的是選擇其中一個時間戳描述的內部JSON對象,這些時間戳基本上是今天的午夜。 所以我想選擇今天的數據集。

有什么建議么?

Greets,Innoberger

您需要使用完整語法進行密鑰訪問,因為美元符號會阻止您使用較短的表單。 錯誤消息應該提供此建議。

$ jq --arg date 1543359600 '.$date' tmp.json
jq: error: syntax error, unexpected '$' (Unix shell quoting issues?) at <top-level>, line 1:
.$date
jq: error: try .["field"] instead of .field for unusually named fields at <top-level>, line 1:
.$date
jq: 2 compile errors

請注意錯誤消息

'嘗試。[“field”]而不是.field'。

但是,您不需要引號,因為這將是您指定文字鍵$date

$ jq --arg date 1543359600 '.[$date]' tmp.json
{
  "name": "Kate",
  "company": "bar"
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM