Go 语言中如何进行 JSON 序列化和反序列化?

推荐答案

在 Go 语言中,可以使用标准库 encoding/json 来进行 JSON 的序列化和反序列化操作。

JSON 序列化

要将 Go 结构体或数据序列化为 JSON 字符串,可以使用 json.Marshal 函数。

-- -------------------- ---- -------
------- ----

------ -
----------------
------
-

---- ------ ------ -
----- ------ -------------
----  ---    ------------
-

---- ------ -
-- -- ------------ -------- ---- ---
---------- --- -- ---------------
--- --- -- --- -
----------------------- ----
--------
--
------------------------------
-

JSON 反序列化

要将 JSON 字符串反序列化为 Go 结构体或数据,可以使用 json.Unmarshal 函数。

-- -------------------- ---- -------
------- ----

------ -
----------------
------
-

---- ------ ------ -
----- ------ -------------
----  ---    ------------
-

---- ------ -
--------- -- ---------------------------
---- - ------
---- -- -------------------------------- ---
--- --- -- --- -
----------------------- ----
--------
--
---------------
-

本题详细解读

JSON 序列化

  1. json.Marshal 函数:该函数接受一个 Go 结构体或数据,并将其序列化为 JSON 格式的字节数组。如果序列化成功,返回的字节数组可以转换为字符串输出。
  2. 结构体标签:在结构体字段后使用 `json:"field_name"` 标签,可以指定该字段在 JSON 中的名称。如果不指定标签,默认使用字段名作为 JSON 键名。

JSON 反序列化

  1. json.Unmarshal 函数:该函数接受一个 JSON 格式的字节数组和一个指向目标结构体的指针,将 JSON 数据反序列化到该结构体中。
  2. 结构体标签:与序列化时相同,结构体字段的标签用于指定 JSON 键名与结构体字段的映射关系。

注意事项

  • 如果 JSON 数据中的字段与结构体字段不匹配,反序列化时会忽略该字段。
  • 如果结构体字段是私有的(即首字母小写),则无法进行序列化和反序列化。
  • 序列化和反序列化过程中可能会遇到错误,建议始终检查错误返回值。
纠错
反馈