How to Handle Binary Data in Go JSON Encoding?

Patricia Arquette
Release: 2024-11-05 17:30:02
Original
353 people have browsed it

How to Handle Binary Data in Go JSON Encoding?

Encoding []byte Strings in JSON Using Go

Problem: Unexpected JSON Encoding of Binary Data

In Go, a []byte slice stores raw binary data. When attempting to encode a struct containing []byte fields into JSON using json.Marshal(), the resulting JSON contains an unexpected string representation of the slice contents instead of the original binary data. For example:

<code class="go">type Msg struct {
    Content []byte
}

func main() {
    msg := Msg{[]byte("Hello")}
    json, _ := json.Marshal(msg)
    fmt.Println(string(json)) // Prints {"Content":"SGVsbG8="}
}</code>
Copy after login

Reason for Base64 Encoding

json.Marshal() encodes []byte slices as base64-encoded strings because JSON does not have a native representation for raw bytes. Base64 encoding represents binary data using a sequence of printable ASCII characters.

Solution: Recovering Original Binary Data

To retrieve the original binary data from the base64-encoded string in the JSON, simply decode the string using the base64.StdEncoding.DecodeString function:

<code class="go">import "encoding/base64"

func main() {
    ...
    decodedBytes, _ := base64.StdEncoding.DecodeString(msg.Content)
    fmt.Println(string(decodedBytes)) // Prints "Hello"
}</code>
Copy after login

The above is the detailed content of How to Handle Binary Data in Go JSON Encoding?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!