修改部分描述,添加必要的标点符号,补充代码超链接 (#804)

This commit is contained in:
Jck
2021-10-25 23:34:42 +08:00
committed by GitHub
parent d5578df00a
commit 39dbdb7094
100 changed files with 433 additions and 414 deletions

View File

@@ -98,9 +98,9 @@ func main() {
}
```
出于安全考虑,在 web 应用中最好使用 `json.MarshalforHTML()` 函数其对数据执行HTML转码所以文本可以被安全地嵌在 HTML `<script>` 标签中。
出于安全考虑,在 web 应用中最好使用 `json.MarshalforHTML()` 函数,其对数据执行 HTML 转码,所以文本可以被安全地嵌在 HTML `<script>` 标签中。
`json.NewEncoder()` 的函数签名是 `func NewEncoder(w io.Writer) *Encoder`返回的Encoder类型的指针可调用方法 `Encode(v interface{})`,将数据对象 v 的json编码写入 `io.Writer` w 中。
`json.NewEncoder()` 的函数签名是 `func NewEncoder(w io.Writer) *Encoder`,返回的 Encoder 类型的指针可调用方法 `Encode(v interface{})`,将数据对象 v 的 json 编码写入 `io.Writer` w 中。
JSON 与 Go 类型对应如下:
@@ -109,7 +109,7 @@ JSON 与 Go 类型对应如下:
- string 对应 JSON 的 string
- nil 对应 JSON 的 null
不是所有的数据都可以编码为 JSON 类型只有验证通过的数据结构才能被编码:
不是所有的数据都可以编码为 JSON 类型只有验证通过的数据结构才能被编码:
- JSON 对象只支持字符串类型的 key要编码一个 Go map 类型map 必须是 map[string]TT是 `json` 包中支持的任何类型)
- Channel复杂类型和函数类型不能被编码
@@ -120,11 +120,11 @@ JSON 与 Go 类型对应如下:
`UnMarshal()` 的函数签名是 `func Unmarshal(data []byte, v interface{}) error` 把 JSON 解码为数据结构。
示例12.16中对 vc 编码后的数据为 `js` ,对其解码时,我们首先创建结构 VCard 用来保存解码的数据:`var v VCard` 并调用 `json.Unmarshal(js, &v)`,解析 []byte 中的 JSON 数据并将结果存入指针 &v 指向的值。
示例 12.16 中对 vc 编码后的数据为 `js` ,对其解码时,我们首先创建结构 VCard 用来保存解码的数据:`var v VCard` 并调用 `json.Unmarshal(js, &v)`,解析 []byte 中的 JSON 数据并将结果存入指针 &v 指向的值。
虽然反射能够让 JSON 字段去尝试匹配目标结构字段;但是只有真正匹配上的字段才会填充数据。字段没有匹配不会报错,而是直接忽略掉。
(练习 15.2b [twitter_status_json.go](exercises/chapter_15/twitter_status_json.go) 中用到了 UnMarshal
(练习 15.2b [twitter_status_json.go](exercises/chapter_15/twitter_status_json.go) 中用到了 Unmarshal
### 解码任意的数据: