<!--{
"Title": "JSON and Go",
"Template": true
}-->

<p>
JSON (JavaScript Object Notation) is a simple data interchange format.
Syntactically it resembles the objects and lists of JavaScript. It is most
commonly used for communication between web back-ends and JavaScript programs
running in the browser, but it is used in many other places, too. Its home page,
<a href="http://json.org">json.org</a>, provides a wonderfully clear and concise
definition of the standard.
</p>

<p>
With the <a href="/pkg/encoding/json/">json package</a> it's a snap to read and
write JSON data from your Go programs.
</p>

<p>
<b>Encoding</b>
</p>

<p>
To encode JSON data we use the
<a href="/pkg/encoding/json/#Marshal"><code>Marshal</code></a> function.
</p>

<pre>
func Marshal(v interface{}) ([]byte, error)
</pre>

<p>
Given the Go data structure, <code>Message</code>,
</p>

{{code "/doc/progs/json1.go" `/type Message/` `/STOP/`}}

<p>
and an instance of <code>Message</code>
</p>

{{code "/doc/progs/json1.go" `/m :=/`}}

<p>
we can marshal a JSON-encoded version of m using <code>json.Marshal</code>:
</p>

{{code "/doc/progs/json1.go" `/b, err :=/`}}

<p>
If all is well, <code>err</code> will be <code>nil</code> and <code>b</code>
will be a <code>[]byte</code> containing this JSON data:
</p>

<pre>
b == []byte(`{"Name":"Alice","Body":"Hello","Time":1294706395881547000}`)
</pre>

<p>
Only data structures that can be represented as valid JSON will be encoded:
</p>

<ul>
<li>
JSON objects only support strings as keys; to encode a Go map type it must be
of the form <code>map[string]T</code> (where <code>T</code> is any Go type
supported by the json package).
</li>
<li>
Channel, complex, and function types cannot be encoded.
</li>
<li>
Cyclic data structures are not supported; they will cause <code>Marshal</code>
to go into an infinite loop.
</li>
<li>
Pointers will be encoded as the values they point to (or 'null' if the pointer
is <code>nil</code>).
</li>
</ul>

<p>
The json package only accesses the exported fields of struct types (those that
begin with an uppercase letter). Therefore only the exported fields of a struct
will be present in the JSON output.
</p>

<p>
<b>Decoding</b>
</p>

<p>
To decode JSON data we use the
<a href="/pkg/encoding/json/#Unmarshal"><code>Unmarshal</code></a> function.
</p>

<pre>
func Unmarshal(data []byte, v interface{}) error
</pre>

<p>
We must first create a place where the decoded data will be stored
</p>

{{code "/doc/progs/json1.go" `/var m Message/`}}

<p>
and call <code>json.Unmarshal</code>, passing it a <code>[]byte</code> of JSON
data and a pointer to <code>m</code>
</p>

{{code "/doc/progs/json1.go" `/err := json.Unmarshal/`}}

<p>
If <code>b</code> contains valid JSON that fits in <code>m</code>, after the
call <code>err</code> will be <code>nil</code> and the data from <code>b</code>
will have been stored in the struct <code>m</code>, as if by an assignment
like:
</p>

{{code "/doc/progs/json1.go" `/m = Message/` `/STOP/`}}

<p>
How does <code>Unmarshal</code> identify the fields in which to store the
decoded data? For a given JSON key <code>"Foo"</code>, <code>Unmarshal</code>
will look through the destination struct's fields to find (in order of
preference):
</p>

<ul>
<li>
An exported field with a tag of <code>"Foo"</code> (see the
<a href="/ref/spec#Struct_types">Go spec</a> for more on struct tags),
</li>
<li>
An exported field named <code>"Foo"</code>, or
</li>
<li>
An exported field named <code>"FOO"</code> or <code>"FoO"</code> or some other
case-insensitive match of <code>"Foo"</code>.
</li>
</ul>

<p>
What happens when the structure of the JSON data doesn't exactly match the Go
type?
</p>

{{code "/doc/progs/json1.go" `/"Food":"Pickle"/` `/STOP/`}}

<p>
<code>Unmarshal</code> will decode only the fields that it can find in the
destination type.  In this case, only the Name field of m will be populated,
and the Food field will be ignored. This behavior is particularly useful when
you wish to pick only a few specific fields out of a large JSON blob. It also
means that any unexported fields in the destination struct will be unaffected
by <code>Unmarshal</code>.
</p>

<p>
But what if you don't know the structure of your JSON data beforehand?
</p>

<p>
<b>Generic JSON with interface{}</b>
</p>

<p>
The <code>interface{}</code> (empty interface) type describes an interface with
zero methods.  Every Go type implements at least zero methods and therefore
satisfies the empty interface.
</p>

<p>
The empty interface serves as a general container type:
</p>

{{code "/doc/progs/json2.go" `/var i interface{}/` `/STOP/`}}

<p>
A type assertion accesses the underlying concrete type:
</p>

{{code "/doc/progs/json2.go" `/r := i/` `/STOP/`}}

<p>
Or, if the underlying type is unknown, a type switch determines the type:
</p>

{{code "/doc/progs/json2.go" `/switch v/` `/STOP/`}}


The json package uses <code>map[string]interface{}</code> and
<code>[]interface{}</code> values to store arbitrary JSON objects and arrays;
it will happily unmarshal any valid JSON blob into a plain
<code>interface{}</code> value.  The default concrete Go types are:

<ul>
<li>
<code>bool</code> for JSON booleans,
</li>
<li>
<code>float64</code> for JSON numbers,
</li>
<li>
<code>string</code> for JSON strings, and
</li>
<li>
<code>nil</code> for JSON null.
</li>
</ul>

<p>
<b>Decoding arbitrary data</b>
</p>

<p>
Consider this JSON data, stored in the variable <code>b</code>:
</p>

{{code "/doc/progs/json3.go" `/b :=/`}}

<p>
Without knowing this data's structure, we can decode it into an
<code>interface{}</code> value with <code>Unmarshal</code>:
</p>

{{code "/doc/progs/json3.go" `/var f interface/` `/STOP/`}}

<p>
At this point the Go value in <code>f</code> would be a map whose keys are
strings and whose values are themselves stored as empty interface values:
</p>

{{code "/doc/progs/json3.go" `/f = map/` `/STOP/`}}

<p>
To access this data we can use a type assertion to access <code>f</code>'s
underlying <code>map[string]interface{}</code>:
</p>

{{code "/doc/progs/json3.go" `/m := f/`}}

<p>
We can then iterate through the map with a range statement and use a type switch
to access its values as their concrete types:
</p>

{{code "/doc/progs/json3.go" `/for k, v/` `/STOP/`}}

<p>
In this way you can work with unknown JSON data while still enjoying the
benefits of type safety.
</p>

<p>
<b>Reference Types</b>
</p>

<p>
Let's define a Go type to contain the data from the previous example:
</p>

{{code "/doc/progs/json4.go" `/type FamilyMember/` `/STOP/`}}

{{code "/doc/progs/json4.go" `/var m FamilyMember/` `/STOP/`}}

<p>
Unmarshaling that data into a <code>FamilyMember</code> value works as
expected, but if we look closely we can see a remarkable thing has happened.
With the var statement we allocated a <code>FamilyMember</code> struct, and
then provided a pointer to that value to <code>Unmarshal</code>, but at that
time the <code>Parents</code> field was a <code>nil</code> slice value. To
populate the <code>Parents</code> field, <code>Unmarshal</code> allocated a new
slice behind the scenes. This is typical of how <code>Unmarshal</code> works
with the supported reference types (pointers, slices, and maps).
</p>

<p>
Consider unmarshaling into this data structure:
</p>

<pre>
type Foo struct {
    Bar *Bar
}
</pre>

<p>
If there were a <code>Bar</code> field in the JSON object,
<code>Unmarshal</code> would allocate a new <code>Bar</code> and populate it.
If not, <code>Bar</code> would be left as a <code>nil</code> pointer.
</p>

<p>
From this a useful pattern arises: if you have an application that receives a
few distinct message types, you might define "receiver" structure like
</p>

<pre>
type IncomingMessage struct {
    Cmd *Command
    Msg *Message
}
</pre>

<p>
and the sending party can populate the <code>Cmd</code> field and/or the
<code>Msg</code> field of the top-level JSON object, depending on the type of
message they want to communicate. <code>Unmarshal</code>, when decoding the
JSON into an <code>IncomingMessage</code> struct, will only allocate the data
structures present in the JSON data. To know which messages to process, the
programmer need simply test that either <code>Cmd</code> or <code>Msg</code> is
not <code>nil</code>.
</p>

<p>
<b>Streaming Encoders and Decoders</b>
</p>

<p>
The json package provides <code>Decoder</code> and <code>Encoder</code> types
to support the common operation of reading and writing streams of JSON data.
The <code>NewDecoder</code> and <code>NewEncoder</code> functions wrap the
<a href="/pkg/io/#Reader"><code>io.Reader</code></a> and
<a href="/pkg/io/#Writer"><code>io.Writer</code></a> interface types.
</p>

<pre>
func NewDecoder(r io.Reader) *Decoder
func NewEncoder(w io.Writer) *Encoder
</pre>

<p>
Here's an example program that reads a series of JSON objects from standard
input, removes all but the <code>Name</code> field from each object, and then
writes the objects to standard output:
</p>

{{code "/doc/progs/json5.go" `/package main/` `$`}}

<p>
Due to the ubiquity of Readers and Writers, these <code>Encoder</code> and
<code>Decoder</code> types can be used in a broad range of scenarios, such as
reading and writing to HTTP connections, WebSockets, or files.
</p>

<p>
<b>References</b>
</p>

<p>
For more information see the <a href="/pkg/encoding/json/">json package documentation</a>. For an example usage of
json see the source files of the <a href="/pkg/net/rpc/jsonrpc/">jsonrpc package</a>.
</p>
