Decoding JSON and a base64-encoded value in a shell script Decoding JSON and a base64-encoded value in a shell script json json

Decoding JSON and a base64-encoded value in a shell script


jq has recently added support for base64 encoding and decoding

https://stedolan.github.io/jq/manual/#Formatstringsandescaping

@base64:

The input is converted to base64 as specified by RFC 4648.

@base64d:

The inverse of @base64, input is decoded as specified by RFC 4648. Note: If the decoded string is not UTF-8, the results are undefined.

For your data, the command would be

jq -r 'map(.Value | @base64d)' < file.json

https://github.com/stedolan/jq/issues/47

It's not released yet, but you can install the latest development version to use it.

brew reinstall --HEAD jq

Once the next version of jq is released then you can switch back to the latest stable version.


Using jq and base64:

jq -r '.[].Value' < file.json | base64 --decode


if this JSON will have always the same structure, you can use cut -d and later decode the value, for example:

$echo "Value": "MzAKCg==" | cut -d ":" -f 2 | base64 -D

30