luci-lib-json: support serializing userdata
authorJo-Philipp Wich <jo@mein.io>
Fri, 18 May 2018 14:59:16 +0000 (16:59 +0200)
committerJo-Philipp Wich <jo@mein.io>
Fri, 18 May 2018 14:59:16 +0000 (16:59 +0200)
Fixes the following error when attempting to serialize userdata objects:

    .../json.lua:81: attempt to call local 'parser' (a nil value)

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
libs/luci-lib-json/luasrc/json.lua

index f7b57f916c1e7c7d62a30dd62a1fa5e52ee4c7b5..6d4d752b19809fe6a841d924a5cabf1b215da52b 100644 (file)
@@ -181,13 +181,18 @@ function Encoder.parse_iter(self, obj)
        end
 end
 
        end
 end
 
+function Encoder.parse_udata(self, obj)
+       return self:parse_string(tostring(obj))
+end
+
 Encoder.parsers = {
        ['nil']      = Encoder.parse_nil,
        ['table']    = Encoder.parse_iter,
        ['number']   = Encoder.parse_number,
        ['string']   = Encoder.parse_string,
        ['boolean']  = Encoder.parse_bool,
 Encoder.parsers = {
        ['nil']      = Encoder.parse_nil,
        ['table']    = Encoder.parse_iter,
        ['number']   = Encoder.parse_number,
        ['string']   = Encoder.parse_string,
        ['boolean']  = Encoder.parse_bool,
-       ['function'] = Encoder.parse_iter
+       ['function'] = Encoder.parse_iter,
+       ['userdata'] = Encoder.parse_udata,
 }
 
 
 }