簡體   English   中英

jq - 解碼流中的 json 值

[英]jq - decode json value in flow

我需要解碼流程中 apache 的授權值,並將該值替換為用戶名,返回修改后的 json。

原Json:

{ "time":"2022-04-07T12:53:39.302+0300", 
.... 
"user":"Basic c2RwC2ZhcmZZc3Q6c2RfX2ZhcmVhz3Q=" }

我想得到 json:

{ "time":"2022-04-07T12:53:39.302+0300", 
.... 
"user":"<login>" }

這里的解碼值是<username>:<password>

我正在嘗試為此使用jq實用程序

stdin> | jq -r  '.user | gsub ("Basic "; "") | @base64d | gsub ("^.*:"; "")'

但是jq返回值本身,而不是修改后的 json。另外,如果 json 值( user )不是 base64 "user":"-"

jq: error (at <stdin>:1): string ("-") is not valid base64 data

如果用戶值不包含“基本”,如何獲得完整修改的 json 並避免修改?

使用if... then... else... end來根據值實現不同的行為。

jq '.user |= if startswith("Basic ")
             then .[6:] | @base64d
             else . end
  ' file.json

暫無
暫無

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

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