44 lines
644 B
Go
44 lines
644 B
Go
|
package jsonpack
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"unicode/utf8"
|
||
|
)
|
||
|
|
||
|
const (
|
||
|
TOKEN_TRUE = -(iota + 1)
|
||
|
TOKEN_FALSE
|
||
|
TOKEN_NULL
|
||
|
TOKEN_EMPTY_STRING
|
||
|
)
|
||
|
|
||
|
// 将对象加密为字符串
|
||
|
func Pack(json any) (string, error) {
|
||
|
pack := &JsonEncode{}
|
||
|
|
||
|
ast, err := pack.astBuilder(json)
|
||
|
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return pack.toString(ast)
|
||
|
}
|
||
|
|
||
|
// 解密数据到JSON字符串
|
||
|
func Unpack(json string) (string, error) {
|
||
|
if !utf8.ValidString(json) {
|
||
|
return "", errors.New("jsonpack 无效的字符串格式, UTF8")
|
||
|
}
|
||
|
|
||
|
unpack := &JsonDecode{}
|
||
|
|
||
|
ast, err := unpack.astBuilder(json)
|
||
|
|
||
|
if err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return unpack.toString(ast)
|
||
|
}
|