]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
[mod_lua] fix json encoding of lua number string 1417/head
authorSeven Du <dujinfang@gmail.com>
Tue, 21 May 2019 09:12:36 +0000 (17:12 +0800)
committerSeven Du <dujinfang@x-y-t.cn>
Mon, 1 Nov 2021 08:16:01 +0000 (16:16 +0800)
src/mod/languages/mod_lua/freeswitch_lua.cpp
src/mod/languages/mod_lua/test/test_json.lua

index 50d077833695d427cde0e0bf1f9114d72bcb815c..5d89aa28f9445b3cf5d68a7e5ebc54715bdf3dae 100644 (file)
@@ -568,11 +568,11 @@ void JSON::LuaTable2cJSON(lua_State *L, int index, cJSON **json)
 
                switch_assert(*json);
 
-               if (lua_isnumber(L, -2)) {
+               if (lua_type(L, -2) == LUA_TNUMBER) {
                        ADDITEM(*json, key, cJSON_CreateNumber(lua_tonumber(L, -2)));
-               } else if (lua_isstring(L, -2)) {
+               } else if (lua_type(L, -2) == LUA_TSTRING) {
                        ADDITEM(*json, key, cJSON_CreateString(lua_tostring(L, -2)));
-               } else if (lua_isboolean(L, -2)) {
+               } else if (lua_type(L, -2) == LUA_TBOOLEAN) {
                        ADDITEM(*json, key, cJSON_CreateBool(lua_toboolean(L, -2)));
                } else if (lua_isnil(L, -2)) {
                        ADDITEM(*json, key, cJSON_CreateNull());
index b8f358f8163111e83c6c10e010d299cfb9d909c8..9ac2c06284246fc996c519327074394ec2af7b67 100644 (file)
@@ -108,5 +108,11 @@ freeswitch.consoleLog("INFO", ret .. "\n")
 ret = json:execute2(json:encode(cmd))
 freeswitch.consoleLog("INFO", ret .. "\n")
 
+sn = json:encode({s = "1001", n = 1002})
+freeswitch.consoleLog("INFO", sn .. "\n")
+ret = json:decode(sn)
+assert(ret.s == "1001")
+assert(ret.n == 1002)
+
 -- assert(false)
 stream:write("+OK")