lua 的 cjson 安装,使用
1. 背景:
虚拟机安装的luajit 没有 cjson 库,就不能对 table 进行 编码操作,手动安装一个。
2. 安装:
cjson下载地址:http://www.kyne.com.au/~mark/software/lua-cjson.php
下载文件 lua-cjson-2.1.0.tar.gz
放到虚拟机一个目录,解压,先 make 一下
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/include -fpic -o lua_cjson.o lua_cjson.c
lua_cjson.c::: error: lua.h: No such file or directory
lua_cjson.c::: error: lauxlib.h: No such file or directory
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
lua_cjson.c:: error: expected ‘)’ before ‘*’ token
这个报错是没有找到 lua 源码,find 一下lua.h这个文件,发现位于好几个路径下。因为历史原因,都可以使用,选择一个。
/usr/local/src/LuaJIT-2.1.-beta2/src/lua.h
/usr/local/luajit/include/luajit-2.1/lua.h
/usr/local/include/luajit-2.0/lua.h
修改Makefile文件,修改default配置为
LUA_VERSION = 5.1
TARGET = cjson.so
PREFIX = /usr/local
#CFLAGS = -g -Wall -pedantic -fno-inline
CFLAGS = -O3 -Wall -pedantic -DNDEBUG
CJSON_CFLAGS = -fpic
CJSON_LDFLAGS = -shared
LUA_INCLUDE_DIR = /usr/local/src/LuaJIT-2.1.0-beta2/src/
LUA_CMODULE_DIR = $(PREFIX)/lib/lua/$(LUA_VERSION)
LUA_MODULE_DIR = $(PREFIX)/share/lua/$(LUA_VERSION)
LUA_BIN_DIR = $(PREFIX)/bin
主要是修改了LUA_INCLUDE_DIR用于安装cjson;修改了PREFIX变量用来改变编译结果文件输出的路径。
保存,执行命令
make && make install
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/src/LuaJIT-2.1.-beta2/src/ -fpic -o lua_cjson.o lua_cjson.c
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/src/LuaJIT-2.1.-beta2/src/ -fpic -o strbuf.o strbuf.c
cc -c -O3 -Wall -pedantic -DNDEBUG -I/usr/local/src/LuaJIT-2.1.-beta2/src/ -fpic -o fpconv.o fpconv.c
cc -shared -o cjson.so lua_cjson.o strbuf.o fpconv.o cp cjson.so /usr/local/lib/lua/5.1/
chmod /usr/local/lib/lua/5.1/cjson.so
3. 使用:

编码:
local cjson2 = require "cjson"
-- 布尔类型
local lua_bool = true
print(cjson2.encode(lua_bool)) -- 数组类型
local lua_array = {, , , , , }
print(cjson2.encode(lua_array)) -- 数值类型
local lua_number = 6.66
print(cjson2.encode(lua_number)) -- 字符串类型
local lua_string = "I am test1280"
print(cjson2.encode(lua_string)) -- 对象类型
local lua_object = {
["name"] = "Jiang",
["age"] = ,
["addr"] = "BeiJing",
["email"] = "1569989xxxx@126.com",
["tel"] = {f='',d=''}
}
print(cjson2.encode(lua_object)) ===================================
true
[1,2,3,4,5,6]
6.66
"I am test1280"
{"addr":"BeiJing","tel":{"d":"456","f":"123"},"age":24,"name":"Jiang","email":"1569989xxxx@126.com"}
解码:
json = require "cjson"
a= '{"deviceid": "dev","taskid": "","tasktype": "3101","configlist":{"sd_new_old_cp_switch":{"vod":"gitvlive"}}}'
atb=json.decode(a)
print(atb.deviceid)
print(atb.configlist)
print(atb.configlist.sd_new_old_cp_switch.vod)
一般 用的比较多的就是 把 json 字符串 decode 成 lua 的 table 数据类型。
lua 的 cjson 安装,使用的更多相关文章
- Redis进阶实践之八Lua的Cjson在Linux下安装、使用和用C#调用Lua脚本
一.引言 学习Redis也有一段时间了,感触还是颇多的,但是自己很清楚,路还很长,还要继续.上一篇文章简要的介绍了如何在Linux环境下安装Lua,并介绍了在Linux环境下如何编写L ...
- 【Lua】CJSON的安装
Lua CJSON 是 Lua 语言提供高性能的 JSON 解析器和编码器,其性能比纯 Lua 库要高 10 到 20 倍.Lua CJSON 完全支持 UTF-8 ,无需依赖其他非 Lua/LuaJ ...
- Lua利用cjson读写json示例分享
本文结合本人的实际使用经验和代码示例,介绍如何在Lua中对json进行encode和decode,需要的朋友可以参考下 我这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能 ...
- Lua中cJson的读写
这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高10~20倍.并且Lua Json完全支持UTF-8,无需以来其他非Lua/LuaJit相关包. 环境安装 ...
- Mac + nginx + lua + luasocket + cjson
1. Lua // 官方网站 http://www.lua.org/ 下载源码包// 由于配合 nginx 使用, 所以使用 5.1.X 版本 $ .tar.gz $ cd lua- $ make m ...
- Lua利用cjson读写json
前言 本文结合本人的实际使用经验和代码示例,介绍如何在Lua中对json进行encode和decode.我这里采用的是Lua CJson库,是一个高性能的JSON解析器和编码器,其性能比纯Lua库要高 ...
- mac下Nginx+lua模块编译安装
Nginx的nb之处就不说了,lua也是一个小巧的脚本语言,由标准C编写而成,几乎可以运行在所有的平台上,也非常强大,其他特性请自行度娘.nginx_lua_module是由淘宝的工程师清无(王晓哲) ...
- Lua 语言环境安装
Linux 系统上安装(本文使用了5..0版本进行安装:) curl -R -O http://www.lua.org/ftp/lua-.tar.gz tar zxf lua-.tar.gz cd l ...
- 【Lua】环境安装与HelloWorld
emmmm...看了W3C和菜鸟教程的环境安装,感觉还是省略了一些东西的. 记录一下在Windows上怎么开始编写Lua的学习过程. 环境安装 直接在Lua官网上找到最新版的下载地址,根据说明下载Lu ...
随机推荐
- Mysql类
架构层面可以采用读写分离,主从复制等等,在数据库前端加cache,如memcache,用于用户登录,商品查询 1.mysql优化的原则是什么? 答: 1.mysql的优化首先要从设计表的过程中 ...
- matplotlib画3D图修改X,Y,Z,colorbar的刻度值
修改X,Y,Z轴的刻度值 from matplotlib.ticker import MultipleLocator,FuncFormatter from mpl_toolkits.mplot3d i ...
- linux学习(二)linux系统的安装
Linux 安装 本章节我们将为大家介绍 Linux 的安装,安装步骤比较繁琐,现在其实云服务器挺普遍的,价格也便宜,如果直接不想搭建,也可以直接买一台学习用用,参考各大云服务器比较. 本章节以 ce ...
- Python字符串内置方法使用及年龄游戏深入探究
目录 作业 ==程序代码自上往下运行,建议自上而下的完成下列任务== 作业 使用代码实现以下业务逻辑: 写代码,有如下变量name = " aleX",请按照要求实现每个功能: 移 ...
- Pwnable-mistake
先看看c的源码 #include <stdio.h> #include <fcntl.h> #define PW_LEN 10 #define XORKEY 1 void xo ...
- jQuery中的文档处理(五)
1. append(content|fn), 向每个匹配的元素内部追加内容 在内部结尾添加. 参数说明: content:String, Element, jQuery,要追加到目标中的内容 func ...
- Mybatis工作原理(九)
mybatis工作流程: (1) SqlSessionFactoryBuilder 从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例. (2) SqlSess ...
- WinSxS目录下文件的清除
1)McAfee Scanner service 持续高cpu 2)上网查到了,需要看 %deflogdir%目录下的OnDemandScan_Activity.log 3) 打开这个文件,发觉一直在 ...
- 安装Rtools
1.好多工具需要安装Rtools install.packages("installr") install.packages("stringr") ###依赖包 ...
- Pycharm2019.2.4专业版激活
Pycharm2019.2.4专业版激活 IDE是开发者创建程序时使用的的软件包,它通过简单的用户界面集成多个高度关联的组件,从而最大化提升编程体验和生产效率:本质上,IDE是一种改进代码创建.测试和 ...