网站侧边栏怎么做,网站底部的备案号,百度建站多少钱,城北区建设局网站encoding/json vs json-iterator 100% Compatibility
默认情况下#xff0c;jsoniter 不会像标准库那样对映射键进行排序。如果你想要 100% 的兼容性#xff0c;就这样使用
m : map[string]interface{}{3: 3,1: 1,2: 2,
}
json : json…encoding/json vs json-iterator 100% Compatibility
默认情况下jsoniter 不会像标准库那样对映射键进行排序。如果你想要 100% 的兼容性就这样使用
m : map[string]interface{}{3: 3,1: 1,2: 2,
}
json : jsoniter.ConfigCompatibleWithStandardLibrary
b, err : json.Marshal(m)最佳实践
默认性能已经比标准库快几倍。如果你想有绝对最好的表现你可以做以下事情
使用 JSONITER。配置最快这将以 6 位精度有损浮点数这要快得多重用基础流或迭代器实例。ConfigFastest.BorrowIterator 或 jsoniter.ConfigFastest.BorrowStream. 记得在完成后 defer。使用 RegisterTypeEncoder 或 RegisterTypeDecoder而不是定义 MarshalJSON 或 UnmarshalJSON。减少了不必要的复制
type T struct{}
type Person struct {Name stringHobby string json:- // json:- 忽略字段; json:-,- Field appears in JSON as key -.Age int json:age,string // json:age,string适用于字符串、浮点数、整数或布尔类型IsGirl bool json:,omitempty // json:,omitempty省略nil如果字段值是0falsenil等省略不展示High float32WorkAge int8Faimily interface{}T T
}var p Person{Name: maying, Hobby: 滑雪, Age: 30, High: 161.3, Faimily: map[string]interface{}{father: 爸爸, Age: 50}, WorkAge: 7}func jsoniterStandardLibararyMarshal() {json : jsoniter.ConfigCompatibleWithStandardLibraryjson.Marshal(p)
}func jsoniterFasterMarshal() {stream : jsoniter.ConfigFastest.BorrowStream(nil)defer jsoniter.ConfigFastest.ReturnStream(stream)stream.WriteVal(p)//fmt.Println(string(stream.Buffer()))
}func jsonMarshal() {json.Marshal(p)//fmt.Println(string(b))
}func Benchmark_jsoniterStandardLibararyMarshal(b *testing.B) {for i : 0; i b.N; i {jsoniterStandardLibararyMarshal()}
}func Benchmark_jsonMarshal(b *testing.B) {for i : 0; i b.N; i {jsonMarshal()}
}
func Benchmark_jsoniterFasterMarshal(b *testing.B) {for i : 0; i b.N; i {jsonMarshal()}
}