Lua CJSON安装和使用

Lua CJSON安装和使用,第1张

概述Lua CJSON、2.1.0版本、MIT协议 支持UTF-8,不支持UTF-16和UTF-32。  #没有任何影响。 支持Lua-5.1、Lua-5.2、LuaJIT。 【安装】 方法一:修改Makefile设置PREFIX变量为/usr/local/lua,然后执行make install即可。 方法二:执行make,然后cp cjson.so $LUA_MODULE_DIRECTORY即可。 Lua CJsON、2.1.0版本、MIT协议 支持UTF-8,不支持UTF-16和UTF-32。  #没有任何影响。 支持Lua-5.1、Lua-5.2、LuaJIT。
【安装】 方法一:修改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安装和使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1265465.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存