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

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