Lua常用的lua-cjson解析json的类库安装与测试

问题分析:

lua脚本写很容易,但是运行可能处处碰壁,尤其是引入的其他的类库的时候,通过require来加载其他的API,如果事先没有安装的话,就会报出问题。

lua-cjson 是一个简单小巧的开源动态库,短小精悍。

问题解决

网上找了许多lua-cjson的安装方案,错误的就不展示了,分享下我安装成功的示例。

一、下载lua-cjson-2.1.0.tar和LuaJIT-2.0.5    提取码: dihd

lua(www.lua.org)其实就是为了嵌入其它应用程序而开发的一个脚本语言,luajit(www.luajit.org)是lua的一个Just-In-Time也就是运行时编译器,也可以说是lua的一个高效版。

二、开始安装luajit

开始执行 make && make install,看到最后一行 就安装成功了。

三、开始安装lua-cjson

修改 /usr/local/lua-cjson-2.1.0/Makefile 文件

将 LUA_INCLUDE_DIR = $(PREFIX)/include

修改为:LUA_INCLUDE_DIR = /usr/local/include/luajit-2.0(这个目录是安装luajit的时候安装的路径)

下面开始执行 make && make install,这样就是安装成功了。下面就开始测试吧

准备一段lua脚本:

local arr = '[{"A":1,"G":2},{"J":3,"KK":100}]'
local arrJson  = cjson.decode(arr)
print(type(arrJson))
print(arrJson[2].KK)

local arr = '{"extend2":"{}","interfaceUrl":"","requestType":"S07","resultCode":"200","returnMess":"orderId=ReservationId;payAmount=PayAmount;payTime=PayTime;paymentLink=PaySource;policyUrl=PolicyUrl;holderInf
oBo=com.suning.ios.entity.bo.telemarket.underwrite.GhbHolderInfoBo[holderName=HolderName,holderCardType=HolderCardType,holderCardNo=HolderCardNo];insuredInfoBo=com.suning.ios.entity.bo.telemarket.underwrite.Gh
bInsuredInfoBo[insuredName=InsuredName,insuredCardType=InsuredCardType,insuredCardNo=InsuredCardNo,insuredRelation=InsuredRelation];carInfo=com.suning.ios.entity.bo.carInsurance.CarInfoBo[ownerName=OwnerName,o
wnerCardType=OwnerCardType,ownerCardNo=OwnerCardNo,vehiclelicenceNo=VehicleLicenceNo,vehicleFrameNo=VehicleFrameNo,vehicleEngineNo=VehicleEngineNo];issuedTime=IssuedTime;qrCode=SourceCode;productInfos=com.suni
ng.ios.entity.bo.carInsurance.ProductInfo[baseRiderType=InsureType,policyNo=PolicyNo,insuBeginDate=InsuBeginDate,insuEndDate=InsuEndDate,insAmount=InsAmount,productMoney=Premium,vehicleTax=VehicleTax]","suppli
erCode":"S167","supplierMessTemp":"保险公司回调给sn信息","supplierMessType":"2"}'

local arrJson  = cjson.decode(arr)
print(arrJson.requestType)



local arr = '[{"cateCode":"R8004002","channelCode":"SC1002","createTime":"2018-06-0214:09:51.0","insContent":[{"productPlanid":"","contentList":[{"insContent":"1","insPrice":"1","insDesc":"1"}],"keyword":"无限
次赔付|最高赔付百万","lastEditTime":"2019-12-1211:25:28.0","productCode":"P10281","productName":"账户安全险手机端","publishTitle":"账户安全险","publishType":1,"rcmdSubtitle":"无限次赔付","rcmdTitle":"百万账户
安全险","saleStartTime":"2018-06-0214:09:00.0","showPrice":"1.99元","sort":0,"thum":"https://uimgpre.cnsuning.com/uimg/eppagtms/eppagtms/149545302822833108.jpg"}]}]'
local arrJson  = cjson.decode(arr)
print(type(arrJson))
print(arrJson[1].insContent[1].contentList[1].insContent)

通过执行 $>luajit testArray.lua

到此:安装以及测试结束,下一章节测试redis 中执行lua脚本去解析json。

下面是不需要LuaJIT的辅助,通过centos自带的lua版本直接下载lua-cjson就可以。

安装lua-cjson的另一种方式,无需luajit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章