Documentation
¶
Index ¶
- Variables
- func Marshal(v interface{}) ([]byte, error)
- func MarshalFast(v interface{}) ([]byte, error)
- func MarshalToString(v interface{}) (string, error)
- func Unmarshal(data []byte, v interface{}) error
- func UnmarshalFast(data []byte, v interface{}) error
- func UnmarshalFromString(str string, v interface{}) error
- type RawMessage
Constants ¶
This section is empty.
Variables ¶
JSON 统一的 jsoniter 配置实例 使用 ConfigCompatibleWithStandardLibrary 确保与标准库完全兼容 同时获得更高的性能(比标准库快 2-3 倍)
所有 jxt-core 组件都应该使用这个统一的配置,包括: - domain/event: DomainEvent 序列化 - eventbus: Envelope 序列化 - outbox: OutboxEvent 序列化 - 其他所有需要 JSON 序列化的组件
var JSONDefault = jsoniter.ConfigDefault
JSONDefault 默认 jsoniter 配置实例 使用 ConfigDefault 平衡性能和兼容性
var JSONFast = jsoniter.ConfigFastest
JSONFast 高性能 jsoniter 配置实例 使用 ConfigFastest 获得最高性能,但可能在某些边缘情况下与标准库不完全兼容 适用于性能敏感的场景
Functions ¶
func Marshal ¶
Marshal 序列化对象为 JSON 字节数组 兼容标准库 json.Marshal 接口
使用示例:
data, err := jxtjson.Marshal(obj)
if err != nil {
return err
}
性能:
- 比标准库 encoding/json 快约 2-3 倍
- 完全兼容标准库 API
func MarshalFast ¶
MarshalFast 使用最高性能配置序列化对象 适用于性能敏感的场景
使用示例:
data, err := jxtjson.MarshalFast(obj)
if err != nil {
return err
}
性能:
- 比标准库 encoding/json 快约 5-10 倍
- 可能在某些边缘情况下与标准库行为略有不同
- 推荐用于性能敏感且数据格式可控的场景
func MarshalToString ¶
MarshalToString 将对象序列化为 JSON 字符串 使用 jsoniter 的高性能 API,避免字节数组到字符串的转换
使用示例:
str, err := jxtjson.MarshalToString(obj)
if err != nil {
return err
}
性能:
- 比 string(json.Marshal(obj)) 更快
- 避免了字节数组到字符串的内存拷贝
func Unmarshal ¶
Unmarshal 从 JSON 字节数组反序列化对象 兼容标准库 json.Unmarshal 接口
使用示例:
var obj MyStruct
err := jxtjson.Unmarshal(data, &obj)
if err != nil {
return err
}
性能:
- 比标准库 encoding/json 快约 2-3 倍
- 完全兼容标准库 API
func UnmarshalFast ¶
UnmarshalFast 使用最高性能配置反序列化对象 适用于性能敏感的场景
使用示例:
var obj MyStruct
err := jxtjson.UnmarshalFast(data, &obj)
if err != nil {
return err
}
性能:
- 比标准库 encoding/json 快约 5-10 倍
- 可能在某些边缘情况下与标准库行为略有不同
- 推荐用于性能敏感且数据格式可控的场景
func UnmarshalFromString ¶
UnmarshalFromString 从 JSON 字符串反序列化对象 使用 jsoniter 的高性能 API,避免字符串到字节数组的转换
使用示例:
var obj MyStruct
err := jxtjson.UnmarshalFromString(str, &obj)
if err != nil {
return err
}
性能:
- 比 json.Unmarshal([]byte(str), &obj) 更快
- 避免了字符串到字节数组的内存拷贝
Types ¶
type RawMessage ¶
type RawMessage = jsoniter.RawMessage
RawMessage jsoniter 兼容的 RawMessage 类型 与标准库 json.RawMessage 完全兼容
使用示例:
type Message struct {
Data jxtjson.RawMessage `json:"data"`
}
说明:
- RawMessage 是 []byte 的别名
- 在 JSON 序列化/反序列化时,RawMessage 会被保留为原始 JSON
- 适用于延迟解析或透传 JSON 数据的场景