跳至主要內容

JSON

The Yock authors大约 2 分钟

json.encode()

  • Prototype
---@param v any
---@vararg string
---@return string
function json.encode(v, ...) end
  • Introduce

encode 序列化 table 为 json 字符串

  • Example
print(json.encode({ 1, 2, 3 })) -- input: [1,2,3]

print(json.encode({ a = 10, b = { c = "d" } })) -- input: {"a":10,"b":{"c":"d"}}

json.decode()

  • Prototype
---@param str string
---@return table
function json.decode(str) end
  • Introduce

decode 反序列化 json 字符串为 table

json.create()

  • Prototype
---@param file string
---@param str? string
---@return json_object
function json.create(file, str) end
  • Introduce

create 打开指定的json文件,并返回json_object对象。如果文件不存在,将会创建。第二个参数指明创建时要写入文件的内容。

json.open()

  • Prototype
---@param file string
---@return json_object
function json.open(file) end
  • Introduce

open 必须要打开已经存在的文件,不然他将会panic。

json.from_str()

  • Prototype
---@param str string
---@return json_object
function json.from_str(str) end
  • Introduce

反序列化 json 字符串并返回对象

json_object

  • Prototype
---@class json_object
---@field buf table
---@field file string

json_object:getbool()

  • Prototype
---@param k string
---@return boolean
function json_object:getbool(k) end

json_object:getnumber()

  • Prototype
---@param k string
---@return number
function json_object:getnumber(k) end

json_object:getstr()

  • Prototype
---@param k string
---@return string
function json_object:getstr(k) end

json_object:gettable()

  • Prototype
---@param k string
---@return table
function json_object:gettable(k) end

json_object:get()

  • Prototype
---@param k string
---@return any
function json_object:get(k) end
  • Introduce

get 能够以 json path 的方式访问值

  • Example
local jf = json.from_str([[{ "a" = { "b" = 10 } }]])
print(jf:get("a.b")) -- input: 10

json_object:rawget()

  • Prototype
---@param k string
---@return any
function json_object:rawget(k) end
  • Introduce

rawget 根据 key 返回值。它与get不同,没有其他额外的操作。

json_object:set()

  • Prototype
---@param k string
---@param v any
function json_object:set(k, v) end
  • Introduce

set 能够以 json path 的形式设置值。

  • Example
local jf = json.from_str([[{ "a": { "b": 10 } }]])
jf:set("a.b", 11)

json_object:rawset()

  • Prototype
---@param k string
---@param v any
function json_object:rawset(k, v) end
  • Introduce

rawget 根据 key 设置值。它和set不同,没有任何额外的处理。

json_object:string()

  • Prototype
---@return string
function json_object:string() end
  • Introduce

string returns json string by self.

json_object:save()

  • Prototype
---@param pretty? boolean
function json_object:save(pretty) end
  • Introduce

save 持久化 json 到指定的文件。通常情况下,它和调用 json.openjson.create 指明的文件相同。你也可以重新设置 file 字段去改变他。Pretty 是可选的,它默认为 false。如果设置为 true,将会格式化/美化 json 字符串写入。

  • Example
local jf = json.open("./test.json")
jf:save(true)
-- to begin
{"a": {"b": 10}}

-- nowadays
{
    "a": {
        "b": 10
    }
}