[luci] backport json decode/encode string functions from 0.10

This commit is contained in:
Bart Van Der Meerssche 2011-01-29 19:53:41 +01:00
parent 23b47bd955
commit 069a8540b0
2 changed files with 29 additions and 1 deletions

View File

@ -10,7 +10,7 @@ You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0 http://www.apache.org/licenses/LICENSE-2.0
$Id: json.lua 3996 2009-01-04 20:08:45Z Cyrus $ $Id$
Decoder: Decoder:
Info: Info:
@ -52,6 +52,7 @@ local type = type
local pairs = pairs local pairs = pairs
local ipairs = ipairs local ipairs = ipairs
local next = next local next = next
local pcall = pcall
local getmetatable = getmetatable local getmetatable = getmetatable
@ -59,6 +60,33 @@ local getmetatable = getmetatable
-- @cstyle instance -- @cstyle instance
module "luci.json" module "luci.json"
--- Directly decode a JSON string
-- @param json JSON-String
-- @return Lua object
function decode(json, ...)
local a = ActiveDecoder(function() return nil end, ...)
a.chunk = json
local s, obj = pcall(a.get, a)
return s and obj or nil
end
--- Direcly encode a Lua object into a JSON string.
-- @param obj Lua Object
-- @return JSON string
function encode(obj, ...)
local out = {}
local e = Encoder(obj, 1, ...):source()
local chnk, err
repeat
chnk, err = e()
out[#out+1] = chnk
until chnk
return not err and table.concat(out) or nil
end
--- Null replacement function --- Null replacement function
-- @return null -- @return null
function null() function null()