...

/

Popular Encoding Formats: JSON

Popular Encoding Formats: JSON

Explore other encoding formats, starting with JSON.

CSV is one of the more basic human-readable encodings that DevOps engineers will encounter, but it is by no means the only one. Within the last two decades, several new formats have emerged that are used to transfer information or provide configuration to applications.

JavaScript Object Notation (JSON) is a data serialization format that was designed to convert JavaScript objects into a textual representation so that they could be saved or transferred. This notation, due to its simplicity and clarity, has been adopted by almost every language to transfer data.

Yet another markup language (YAML) is another data serialization format that is often used to store configuration information for a service. YAML is the primary configuration language in Kubernetes clusters.

In this lesson, we'll look at the ways to marshal and unmarshal data from Go types into these formats and back into the Go type.

The Go field tags

Go has a feature called field tags that allow a developer to add string tags to struct fields. This allows a Go program to inspect the extra metadata regarding a field before performing an operation. Tags are key/value pairs:

Press + to interact
type Record struct {
Last string `json:"last_name"`
}

In the preceding code snippet, we can see a struct type with a field called Last that has a field tag. The field tag is an inline raw string. Raw strings are denoted by backticks. This will produce a tag with a key of "json" and a value of "last_name".

Go packages can use the reflect package to read these tags. These tags allow a package to change the behavior of an operation based on the tag data. In this example, it tells our JSON encoder package to use last_name instead of Last when writing data to JSON and the reverse when reading data. This feature is key for packages that handle data marshaling.

JSON

Over the past decade, the JSON format has become the de facto format for data encoding to disk and for communicating via RPC to services. No language in the cloud space can be successful without supporting JSON.

A developer might encounter JSON as an application configuration language, but it is poorly suited for this task due to the following reasons:

  • The lack of multiline strings

  • The ...