-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base64 decoding function #47
Comments
@stdeolan FYI there's several variants of base64 encoding :( Also, a decoder would be equally nice now that we have fromjson. |
I find myself also wanting a base64 decoder. Are there any updates on this feature? |
base64 coding is certainly in master.
|
+1 for base64 decoding |
As this is showing up on Google a lot, and good documentation on jq is sparse, here is to everybody who lands here: Example: echo '{"foo": "Ym9iIGxpa2VzIGFsaWNlCg=="}' | jq '.foo | @base64d' Or even use it when building new objects: echo '{"foo": "Ym9iIGxpa2VzIGFsaWNlCg=="}' | jq '{encoded: .foo, decoded: .foo | @base64d}' |
Thank you @Overbryd! After building jq in a Docker container (fixing the Dockerfile first), this works for me. |
@Overbryd , when I run your example of decoding, I get an error. $ jq --version
jq-1.5
$ echo '{"foo": "Ym9iIGxpa2VzIGFsaWNlCg=="}' | jq '.foo | @base64d'
jq: error (at <stdin>:1): base64d is not a valid format However, if I run |
@ameissnersofi My best guess is that you have to have a recent version of jq. |
@ameissnersofi I believe Edit: I built latest from source and confirmed it is there and working:
|
@l8nite awesome! I see that 1.6 is in rc1 right now, which is probably why brew didn't pick it up for me. Thanks so much! |
@ameissnersofi - Have you tried |
Great job all, on the feature and documenting its access. |
@base64d seems to have issues with binary values, or at least does not match $ echo "V0MsL2hwbyCcGs2AMrFAKaSjPl8OuX4OWAEip+idGVU=" | jq -Rr '@base64d' | xxd -p -c64
57432c2f68706f20efbfbd1acd8032efbfbd4029efbfbdefbfbd3e5f0eefbfbd7e0e580122efbfbdefbfbd19550a
$ echo "V0MsL2hwbyCcGs2AMrFAKaSjPl8OuX4OWAEip+idGVU=" | base64 -d | xxd -p -c64
57432c2f68706f209c1acd8032b14029a4a33e5f0eb97e0e580122a7e89d1955
$ echo "V0MsL2hwbyCcGs2AMrFAKaSjPl8OuX4OWAEip+idGVU=" | base64 -d | hexdump -C
00000000 57 43 2c 2f 68 70 6f 20 9c 1a cd 80 32 b1 40 29 |WC,/hpo ....2.@)|
00000010 a4 a3 3e 5f 0e b9 7e 0e 58 01 22 a7 e8 9d 19 55 |..>_..~.X."....U|
$ echo "V0MsL2hwbyCcGs2AMrFAKaSjPl8OuX4OWAEip+idGVU=" | jq -Rr '@base64d' | hexdump -C
00000000 57 43 2c 2f 68 70 6f 20 ef bf bd 1a cd 80 32 ef |WC,/hpo ......2.|
00000010 bf bd 40 29 ef bf bd ef bf bd 3e 5f 0e ef bf bd |..@)......>_....|
00000020 7e 0e 58 01 22 ef bf bd ef bf bd 19 55 0a |~.X.".......U.| |
Thanks for the report @mterron - I'd suggest starting a new issue so we can track a fix for it there. I'll try to take a look at this tomorrow. Edit: Actually, I remember now that if the encoded value is not a UTF-8 string than the results of the decode are undefined. |
Then it's not actually I opened #1931 to track this. |
@mterron -- jq is JSON-oriented with further limitations based on UTF-8 requirements. In particular, |
On my brand new centos 8 system, I yum installed jq, tried this and hit: |
It works in jq-1.6 |
Yup. but top of the line, epel is only jq-1.5, so to a bunch of users, it doesn't exist. :( Anyone maintain the jq version on epel? |
Add a function to base64 encode and decode a string result. Some serialization packages such as Jackson, a popular Java package, include base64 encoding for some data fields.
The text was updated successfully, but these errors were encountered: