luci-lib-json: support serializing userdata
[project/luci.git] / libs / luci-lib-json / luasrc / json.lua
index 416b25f..6d4d752 100644 (file)
@@ -149,11 +149,13 @@ function Encoder.parse_iter(self, obj)
                local first = true
 
                for key, entry in pairs(obj) do
-                       first = first or self:put(",")
-                       first = first and false
-                       self:parse_string(tostring(key))
-                       self:put(":")
-                       self:dispatch(entry)
+                       if key ~= null then
+                               first = first or self:put(",")
+                               first = first and false
+                               self:parse_string(tostring(key))
+                               self:put(":")
+                               self:dispatch(entry)
+                       end
                end
 
                self:put("}")
@@ -179,13 +181,18 @@ function Encoder.parse_iter(self, obj)
        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,
-       ['function'] = Encoder.parse_iter
+       ['function'] = Encoder.parse_iter,
+       ['userdata'] = Encoder.parse_udata,
 }