自定义 Marshal 和 Unmarshal

默认行为

Req 默认使用标准库的 Marshal 和 Unmarshal 实现:

  • 如果将 map 或 struct 传入 Request.SetBody, Request.SetBodyJsonMarshal or Request.SetBodyXmlMarshal,会使用 json.Marshalxml.Marshal 来将请求体 Marshal 成指定编码格式的内容。
  • 如果将 map 或 struct 传入 Request.SetResult, Request.SetErrorResponse.Unmarshal,会根据编码格式使用 json.Unmarshalxml.Unmarshal 来响应体 Unmarshal 到传入的 map 或 struct 中。

自定义

你可以使用 Client.SetJsonMarshal, Client.SetJsonUnmarshal, Client.SetXmlMarshalClient.SetXmlUnmarshal 来自定义 Marshal 和 Unmarshal 的实现:

// Example of registering json-iterator
import jsoniter "github.com/json-iterator/go"

json := jsoniter.ConfigCompatibleWithStandardLibrary

client := req.C().
	SetJsonMarshal(json.Marshal).
	SetJsonUnmarshal(json.Unmarshal)

// Similarly, XML functions can also be customized
client.SetXmlMarshal(xmlMarshalFunc).SetXmlUnmarshal(xmlUnmarshalFunc)