[jq] JSON 内の文字列を Base64 エンコード・デコードする

作成日: 2026年10月31日

jq の @base64 と @base64d を使用すると、JSON 内の文字列を Base64 エンコード・デコードできます。更新演算子の |= と組み合わせると、特定のプロパティの値を変換できます。

Base64 エンコードする

下記の例では、message プロパティの文字列を Base64 エンコードしています。

printf '%s\n' '{"id":1,"message":"Hello, jq!"}' | jq '.message |= @base64'

実行結果は下記のとおりです。

{
  "id": 1,
  "message": "SGVsbG8sIGpxIQ=="
}

.message |= @base64 は、message の値に @base64 を適用し、その結果で値を更新します。この例では、id の値はそのまま保持されます。

Base64 デコードする

@base64d を使用すると、Base64 エンコードされた文字列をデコードできます。

printf '%s\n' '{"id":1,"message":"SGVsbG8sIGpxIQ=="}' | jq '.message |= @base64d'

実行結果は下記のとおりです。

{
  "id": 1,
  "message": "Hello, jq!"
}

message の値が元の文字列に戻ります。この例では、UTF-8 テキストを Base64 エンコードした文字列を扱っています。

参考

jq