luci-lib-jsonc: allow encoding empty lists 457/head
authorJan-Philipp Litza <janphilipp@litza.de>
Sun, 30 Aug 2015 13:45:49 +0000 (15:45 +0200)
committerJan-Philipp Litza <janphilipp@litza.de>
Sun, 30 Aug 2015 13:52:33 +0000 (15:52 +0200)
To be consistent with the behavior of luci-lib-json, an empty Lua table
should be encoded to an empty JSON list, not an empty JSON object.

To still allow encoding empty JSON objects, the usage of anything other
than a number or a string as a key (for example an empty table or a
function) can be used to force encoding as an object:

    json.stringify({})                  -- "[]"
    json.stringify({[{}] = true})       -- "{}"

Signed-off-by: Jan-Philipp Litza <janphilipp@litza.de>
libs/luci-lib-jsonc/src/jsonc.c

index 827fde8..971fb12 100644 (file)
@@ -222,7 +222,7 @@ static int _lua_test_array(lua_State *L, int index)
 
 out:
                lua_pop(L, 2);
 
 out:
                lua_pop(L, 2);
-               return 0;
+               return -1;
        }
 
        /* check for holes */
        }
 
        /* check for holes */
@@ -254,7 +254,7 @@ static struct json_object * _lua_to_json(lua_State *L, int index)
        case LUA_TTABLE:
                max = _lua_test_array(L, index);
 
        case LUA_TTABLE:
                max = _lua_test_array(L, index);
 
-               if (max > 0)
+               if (max >= 0)
                {
                        obj = json_object_new_array();
 
                {
                        obj = json_object_new_array();