[json] JSON序列化与反序列化
本系统的 JSON API 非常简单,只有两个,一个是序列化一个是反序列化
#
API(Golang 风格)fn json.Marshal(var_1: interface {}): ([]byte, error)
Json 序列化,把任意一个对象解析成 []byte,内容是 JSON 字符串fn json.New(var_1: string|[]byte|any): (*yaklib.yakJson, error)
把字符串或者一个对象,变成 json 序列化之后的内容,只有几种情况,分别为:string
number
object
array
null
我们发现,这个包关键返回了一个数据类型,是 *yaklib.yakJson
这个类型的定义是
type palm/common/yak/yaklib.(yakJson) struct {PtrStructMethods(指针结构方法/函数): // 判断解析出的对象是否是数组 [] func IsArray() return(bool) func IsSlice() return(bool)
// 判断解析出的对象是否是 Object / map func IsObject() return(bool) func IsMap() return(bool)
// 判断是否是空 func IsNil() return(bool)∂ func IsNull() return(bool)
// 判断解析出的是否是数字 func IsNumber() return(bool)
// 判断是否是字符串 func IsString() return(bool)
// 获得解析出来的具体的值 func Value() return(interface {})}
#
API(Python 风格)常见的 Python 风格的 JSON 处理有两个接口,dumps/loads
fn json.loads(content: string|[]byte) any
: 把一个字符串解析成一个 Yak/Golang 对象fn json.dumps(target: any) string
: 把一个 Yak/Golang 数据类型解析成一个字符串
所以最基础的,我们可以使用如下方式来测试这两个功能:
println(json.loads(`{"test": 123}`))println(json.dumps({"test": 123}))
返回的结果为:
map[test:123]{"test":123}