【安装】 方法一:修改Makefile设置PREFIX变量为/usr/local/lua,然后执行make install即可。 方法二:执行make,然后cp cJson.so $LUA_MODulE_DIRECTORY即可。 【使用】 模块实例化: > local cJson = require "cJson" Lua CJsON不会自动创建一个模块table的全局变量,要自己赋给一个叫"cJson"的变量。 > local cJson2 = cJson.new() 创建一个cJson模块的独立副本给cJson2,可以拥有各自不同的enCoding buffer和默认配置。
> local cJson_safe = require "cJson.safe" cJson.safe模块几乎与cJson模块一样,只是cJson只能在JsON转码过程中立即报错,而cJson.safe则不会立即报错,而是返回nil和一条错误信息。 解码(decode): > Json_text = '[true,{"foo":"bar"}]' > lua_value = cJson.decode(Json_text) => Returns: {true,{foo="bar"}} cJson.decode会把一个UTF-8的JsON字符串转为一个Lua value或table,JsON中的null会转为一个空的lightuserdata,可以与cJson.null进行比较,如果JsON中的key为数字,会自动转为字符串存储。 > setting = cJson.decode_invalID_numbers(setting) #setting为true或false,默认为true 当解码一个JsON不支持的数字(infinity,NaN或hexadecimal)时,JsON会报错。默认setting为true,允许接收并解码非法数字,如果setting为false,就会报错。 > depth = cJson.decode_max_depth([depth]) #depth为正整数,默认为1000层。 为了防止溢栈,我们可以限制迭代的层数,超过指定的层数,就会报错。
编码(encode): > lua_value = {true,{foo="bar"}} > Json_text = cJson.encode(lua_value) => Returns: '[true,u5b8bu4f53; Font-size:14px"> cJson.encode会把一个Lua value或table转为一个UTF-8的JsON字符串。支持的Lua类型有boolean、空lightuserdate、nil、number(最多14位有效数字)、string和table,不支持的Lua类型有function、非空lightuserdata、thread和userdata。在UTF-8字符串中要转义(加/)的字符有ASCII 0~31(控制字符)、ASCII 34(")、ASCII 47(\)、ASCII 92(/)、ASCII 127(Delete)。如果Lua table中的key全是正整数,会转为JsON array([ ]),否则转为JsON object({ }),Lua JsON只支持key为number和string,其他类型会报错,它不会使用元方法,只会使用rawget遍历Lua array,使用next遍历Lua object,Lua array和Lua object其实都是Lua table。
> setting = cJson.encode_invalID_numbers([setting]) #setting为true、null或false,默认为false 当编码一个Lua浮点数时可能会产生一个JsON不支持的数字(infinity或NaN),true表示允许编码这些非法数字,可能产生一个不标准的JsON表示,null表示把所有的非法数字都转为JsON null值,false表示遇到非法数字报错。 > keep = cJson.encode_keep_buffer([keep]) #keep为true或false,默认为true true表示JsON enCoding buffer会一直被重用,直到JsON模块被垃圾回收为止,false表示每次调用cJson.encode都会创建和释放JsON enCoding buffer。 > depth = cJson.encode_max_depth([depth]) #depth为正整数,默认为1000层 与cJson.decode_max_depth类似。 > precision = cJson.encode_number_precision([precision]) #precision为1至14,默认为14 用来设置JsON中数字的精度(有效位数)。 > convert,ratio,safe = cJson.encode_parse_array([convert[,ratio[,safe]]]) #convert为true或false,默认为false,ratio为正整数,默认为2,safe为正整数,默认为10 与编码稀疏的Lua array有关,很复杂,忽略之。
以上是内存溢出为你收集整理的Lua CJSON安装和使用全部内容,希望文章能够帮你解决Lua CJSON安装和使用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)