现象如下:
print(cjson.encode({url="http://www.baidu.com"}));
{"url":"http:\/\/www.biau.com"}
分析发现cjson实现时对/进行转义,json规范里约定/可以转义也可以不转义。解决办法修改cjson源码,目录在openresty-x.x.x.x/bundle/lua-cjson-y.y.y.y/
修改文件:lua_cjson.c 搜索char2escape
NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\\/", 最后一个字符替换为: NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
重新编译openresty解决。
来源:oschina
链接:https://my.oschina.net/osgit/blog/3193624