1 Star 0 Fork 1

flyiot/flylibs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
func.go 2.79 KB
一键复制 编辑 原始数据 按行查看 历史
flyrainning 提交于 2023-08-25 23:18 +08:00 . u
package FlyJSON
import (
"gitee.com/flyiot/flylibs/FlyUtils"
jsoniter "github.com/json-iterator/go"
)
func API() jsoniter.API {
return APIExt(false, 4)
}
func MinAPI() jsoniter.API {
return APIExt(false, 0)
}
func APIExt(addExtra bool, IndentionStep int) jsoniter.API {
api := jsoniter.Config{
//指定格式化序列化输出时的空格缩进数量
IndentionStep: IndentionStep,
//指定浮点数序列化输出时最多保留6位小数
MarshalFloatWith6Digits: true,
//开启了这个选项后,如果你的string类型的变量中含有HTML中使用的特殊字符(如'<','>','&'等),序列化时它们会被转义输出
EscapeHTML: true,
//指定map类型序列化输出时按照其key排序
SortMapKeys: true,
//指定反序列化时将数字(整数、浮点数)解析成json.Number类型
UseNumber: true,
// 当开启该选项时,反序列化过程如果解析到未知字段,即在结构体的schema定义中找不到的字段时,不会跳过然后继续解析,而会返回错误
DisallowUnknownFields: false,
// 指定tag字符串,默认情况为"json",我们可以指定成另一个字符串
TagKey: "json",
// 当开启该选项时,只有带上tag的结构体字段才会被序列化输出
OnlyTaggedField: false,
// json.RawMessage类型的字段在序列化时会原封不动地进行输出。开启这个选项后,json-iterator会校验这种类型的字段包含的是否一个合法的json串,如果合法,原样输出;否则会输出"null"
ValidateJsonRawMessage: false,
// 开启该选项后,反序列化过程中不会对你的json串中对象的字段字符串可能包含的转义进行处理,因此你应该保证你的待解析json串中对象的字段应该是简单的字符串(不包含转义)
ObjectFieldMustBeSimpleString: false,
// 开启该选项后,你的待解析json串中的对象的字段必须与你的schema定义的字段大小写严格一致
CaseSensitive: false,
}.Froze()
if addExtra {
api.RegisterExtension(&timeExtension{})
}
return api
}
func Parse(jsonStr string) jsoniter.Any {
return ParseByte([]byte(jsonStr))
}
func ParseByte(jsonByte []byte) jsoniter.Any {
api := API()
if api.Valid(jsonByte) {
return api.Get(jsonByte)
}
return api.Get([]byte("{}"))
}
func ParseFile(filename string) jsoniter.Any {
if b, err := FlyUtils.ReadFile(filename); err == nil {
return ParseByte(b)
}
return Parse("{}")
}
func Stringify(obj any) string {
if b, err := MinAPI().Marshal(obj); err == nil {
return string(b)
}
return ""
}
func ToString(obj any) string {
if b, err := API().Marshal(obj); err == nil {
return string(b)
}
return ""
}
func ToFile(filename string, obj any) error {
b, err := API().Marshal(obj)
if err != nil {
return err
}
return FlyUtils.WriteFile4byte(filename, &b)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/flyiot/flylibs.git
git@gitee.com:flyiot/flylibs.git
flyiot
flylibs
flylibs
b9c81f1c9857

搜索帮助