mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 19:41:43 +08:00
@@ -11,7 +11,7 @@
|
||||
- 数据结构 --> 指定格式 = `序列化` 或 `编码`(传输之前)
|
||||
- 指定格式 --> 数据结构 = `反序列化` 或 `解码`(传输之后)
|
||||
|
||||
序列化是在内存中把数据转换成指定格式(data -> string),反之亦然(string -> data structure)
|
||||
序列化是在内存中把数据转换成指定格式(data -> string),反之亦然(string -> data)。
|
||||
|
||||
编码也是一样的,只是输出一个数据流(实现了 io.Writer 接口);解码是从一个数据流(实现了 io.Reader)输出到一个数据结构。
|
||||
|
||||
@@ -118,13 +118,13 @@ JSON 与 Go 类型对应如下:
|
||||
|
||||
### 反序列化:
|
||||
|
||||
`UnMarshal()` 的函数签名是 `func Unmarshal(data []byte, v interface{}) error` 把 JSON 解码为数据结构。
|
||||
`json.Unmarshal()` 的函数签名是 `func Unmarshal(data []byte, v interface{}) error` 把 JSON 解码为数据结构。
|
||||
|
||||
示例 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)
|
||||
|
||||
### 解码任意的数据:
|
||||
|
||||
|
Reference in New Issue
Block a user