У меня есть следующий объект:
{
"domainId": "hidden",
"lastUsed": "Thu Oct 04 2018",
"lastUsedTimestamp": 1538673002460,
"users": [
{
"userId": "hidden",
"lastUsedTimestamp": 1538673002460
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536087726701
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536086675399
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536182646984
}
]
}
Я хочу преобразовать все lastUsedTimestamp
значения в дату. Это работает с:
reduce (paths | select(.[-1] == "lastUsedTimestamp")) as $p
(.;setpath($p; getpath($p) / 1000 | todate))
Но что, если бы у меня были другие метки времени, такие как createdTimestamp
или startTimestamp
в других местах объекта? Например:
{
"domainId": "hidden",
"lastUsed": "Thu Oct 04 2018",
"lastUsedTimestamp": 1538673002460,
"users": [
{
"userId": "hidden",
"lastUsedTimestamp": 1538673002460
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536087726701
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536086675399,
"createdTimestamp": 1536086675399
},
{
"userId": "hidden",
"lastUsedTimestamp": 1536182646984,
"startTimestamp": 1536182646984
}
]
}
Я пытался
reduce (paths | select(.[-1] | endswith("Timestamp")) as $p
(.;setpath($p; getpath($p) / 1000 | todate))
или эквивалент с test
, но пути, заканчивающиеся целым числом, приводят к сбою.
Как я могу обойти это?