代码拉取完成,页面将自动刷新
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)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。