12
en/07.2.md
12
en/07.2.md
@@ -108,9 +108,9 @@ After asserted, you can use the following code to access data:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
As you can see, we can parse JSON of an unknown format through interface{} and type assert now.
|
As you can see, we can now parse JSON of an unknown format through interface{} and type assertion.
|
||||||
|
|
||||||
The above example is the official solution, but type asserting is not always convenient. So, I recommend an open source project called `simplejson`, created and maintained by by bitly. Here is an example of how to use this project to deal with JSON of an unknown format:
|
The above example is the official solution, but type asserting is not always convenient. So, I recommend an open source project called `simplejson`, created and maintained by bitly. Here is an example of how to use this project to deal with JSON of an unknown format:
|
||||||
|
|
||||||
js, err := NewJson([]byte(`{
|
js, err := NewJson([]byte(`{
|
||||||
"test": {
|
"test": {
|
||||||
@@ -185,7 +185,7 @@ Here are some points you need to keep in mind when trying to produce JSON:
|
|||||||
|
|
||||||
- Field tags containing `"-"` will not be outputted.
|
- Field tags containing `"-"` will not be outputted.
|
||||||
- If a tag contains a customized name, Go uses this instead of the field name, like `serverName` in the above example.
|
- If a tag contains a customized name, Go uses this instead of the field name, like `serverName` in the above example.
|
||||||
- If a tag contains `omitempty`, this field will not be outputted if it is its zero-value.
|
- If a tag contains `omitempty`, this field will not be outputted if it is zero-value.
|
||||||
- If the field type is `bool`, string, int, `int64`, etc, and its tag contains `",string"`, Go converts this field to its corresponding JSON type.
|
- If the field type is `bool`, string, int, `int64`, etc, and its tag contains `",string"`, Go converts this field to its corresponding JSON type.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
@@ -198,7 +198,7 @@ Example:
|
|||||||
ServerName string `json:"serverName"`
|
ServerName string `json:"serverName"`
|
||||||
ServerName2 string `json:"serverName2,string"`
|
ServerName2 string `json:"serverName2,string"`
|
||||||
|
|
||||||
// If ServerIP is empty, it will not be outputed.
|
// If ServerIP is empty, it will not be outputted.
|
||||||
ServerIP string `json:"serverIP,omitempty"`
|
ServerIP string `json:"serverIP,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -218,11 +218,11 @@ Output:
|
|||||||
The `Marshal` function only returns data when it has succeeded, so here are some points we need to keep in mind:
|
The `Marshal` function only returns data when it has succeeded, so here are some points we need to keep in mind:
|
||||||
|
|
||||||
- JSON only supports strings as keys, so if you want to encode a map, its type has to be `map[string]T`, where `T` is the type in Go.
|
- JSON only supports strings as keys, so if you want to encode a map, its type has to be `map[string]T`, where `T` is the type in Go.
|
||||||
- Types like channel, complex types and functions are not able to be encoded to JSON.
|
- Types like channel, complex types and functions are not capable of being encoded to JSON.
|
||||||
- Do not try to encode cyclic data, it leads to an infinite recursion.
|
- Do not try to encode cyclic data, it leads to an infinite recursion.
|
||||||
- If the field is a pointer, Go outputs the data that it points to, or else outputs null if it points to nil.
|
- If the field is a pointer, Go outputs the data that it points to, or else outputs null if it points to nil.
|
||||||
|
|
||||||
In this section, we introduced how to decode and encode JSON data in Go. We also looked at one third-party project called `simplejson` which is for parsing JSON or unknown format. These are all useful concepts for developping web applications in Go.
|
In this section, we introduced how to decode and encode JSON data in Go. We also looked at one third-party project called `simplejson` which is useful for parsing JSON or unknown format. These are all useful concepts for developing web applications in Go.
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user