cjson

Redis Lua Differetiating empty array and object

末鹿安然 提交于 2020-07-19 02:51:07
问题 I encountered this bug in cjson lua when I was using a script in redis 3.2 to set a particular value in a json object. Currently, the lua in redis does not differentiate between an empty json array or an empty json object. Which causes serious problems when serialising json objects that have arrays within them. eval "local json_str = '{\"items\":[],\"properties\":{}}' return cjson.encode(cjson.decode(json_str))" 0 Result: "{\"items\":{},\"properties\":{}}" I found this solution https://github

cJSON c++ - add item object

放肆的年华 提交于 2020-06-18 13:09:06
问题 I'm using cJSON Library. For a body example request with JSON like this: { "user": { "name":"user name", "city":"user city" } } I add the objects like this and its work: cJSON *root; cJSON *user; root = cJSON_CreateObject(); cJSON_AddItemToObject(root,"user", user = cJson_CreateObject()); cJSON_AddStringToObject(user, "name", name.c_str()); cJSON_AddStringToObject(user, "city", city.c_str()); But now i have a body json little different: { "user": { "informations:"{ "name1":"user name1",

lua-resty-kafka配置文档

怎甘沉沦 提交于 2020-05-08 04:42:15
参考网址: https://github.com/doujiang24/lua-resty-kafka 一、例子 content_by_lua ' -- 引入lua所有api local cjson = require "cjson" local producer = require "resty.kafka.producer" -- 定义kafka broker地址,ip需要和kafka的host.name配置一致 local broker_list = { { host = "192.168.101.223", port = 9092 }, { host = "192.168.101.224", port = 9092 } } local key = "key" local message = "halo world" local error_handle = function (topic, partition_id, queue, index, err, retryable) ngx.log(ngx.ERR, "failed to send to kafka, topic: ", topic, "; partition_id: ", partition_id, "; retryable: ", retryable) end local p = producer:new

使用RTThread和TouchGFX实现DIY数字仪表(五)——同步天气信息

寵の児 提交于 2020-05-02 16:52:46
目录: 1.使用RTThread和TouchGFX实现DIY数字仪表(一)——使用STM32CUBMX5.6移植touchGFX4.13 2.使用RTThread和TouchGFX实现DIY数字仪表(二)——把TouchGFX移植到RTThread系统 3.使用RTThread和TouchGFX实现DIY数字仪表(三)——获取温湿度传感器数据 4.使用RTThread和TouchGFX实现DIY数字仪表(四)——同步网络时间 5.使用RTThread和TouchGFX实现DIY数字仪表(五)——同步天气信息 6.使用RTThread和TouchGFX实现DIY数字仪表(六)——链接阿里云物联网平台 7.使用RTThread和TouchGFX实现DIY数字仪表(七)——使用MQTT.fx模拟手机设备进行M2M设备间通信 8.使用RTThread和TouchGFX实现DIY数字仪表(八)——开发微信小程序 9.使用RTThread和TouchGFX实现DIY数字仪表(九)——TouchGFX控件使用教程 实验平台: 硬件: 野火挑战者STM32F767 V1开发版和ESP8266模块 软件: TouchGFXDesigner v4.13和 STM32CubeMX v5.6.0,MDK v5.29,RT-Thread env 工具 实验前准备工作: 1.准备一套

cJSON_json包的C语言解析库

笑着哭i 提交于 2020-04-12 07:50:55
cJSON库描述 CJSON是一个用于解析JSON包的C语言库,库文件为cJSON.c和cJSON.h, 所有的实现都在这两个文件中。原作者的地址 cJSON 。 JSON包的解析 例如有一个JSON的数据包如下: { "rxpk": [ { "tmst": 1868500100, "time": "2016-07-07T13:20:40.003906Z", "chan": 1, "rfch": 0, "freq": 779.7, "stat": 1, "modu": "LORA", "datr": "SF9BW125", "codr": "4/5", "lsnr": 9.8, "rssi": -37, "size": 83, "data": "QH/4iimAKgACB0KHP8e0IgQAhI0bBi9bvFfb8jHeSWEAhpnsCGHwt9pUCvrRMazQRBtN+kh3Ge5hFL8jUtHpk3luFtcTLlgGVMPSBLpSp8h6C44=" } ] } 我们需要获取其中的data字段,需要进行的过程如下: 首先声明变量 cJSON *json; cJSON *rxpk; cJSON *arr0; cJSON *data; 将上述的字符串进行解析,并保存在json中; 获取json其中的rxpk字段的内容,并保存在rxpk中; 获取rxpk中的arr部分

cJSON 使用详解

為{幸葍}努か 提交于 2020-04-12 07:50:42
由于c语言中,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json。如果有对应的数据结构就方便一些, 如python中用json.loads(json)就把json字符串转变为内建的数据结构处理起来比较方便。 cjson库文件下载 : sourceforge地址 下载完之后读一下,README。 编译方式 : 在工程中添加cJSON.c 和cJSON.h 编译即可,不过要添加-lm链接库gcc选项,如: gcc cJSON.c main.c -o main -lm 添加-lm是因为用到了,数学库有关的函数。 一个重要概念 : 在cjson中,json对象可以是json,可以是字符串,可以是数字。。。 cjson数据结构定义 : #define cJSON_False 0 #define cJSON_True 1 #define cJSON_NULL 2 #define cJSON_Number 3 #define cJSON_String 4 #define cJSON_Array 5 #define cJSON_Object 6 typedef struct cJSON { struct cJSON *next,*prev; /* next/prev allow you to walk array/object chains. Alternatively,

openresty cjson转义斜线/为\\/

天涯浪子 提交于 2020-03-13 22:00:51
现象如下: print(cjson.encode({url="http://www.baidu.com"})); {"url":"http:\/\/www.biau.com"} 分析发现cjson实现时对/进行转义,json规范里约定/可以转义也可以不转义。解决办法修改cjson源码,目录在openresty-x.x.x.x/bundle/lua-cjson-y.y.y.y/ 修改文件:lua_cjson.c 搜索char2escape NULL , NULL , NULL , NULL , NULL , NULL , NULL , "\\/" , 最后一个字符替换为: NULL , NULL , NULL , NULL , NULL , NULL , NULL , NULL, 重新编译openresty解决。 来源: oschina 链接: https://my.oschina.net/osgit/blog/3193624

nginx-openresty实现限流

不羁的心 提交于 2020-03-08 17:35:38
nginx-openresty实现限流 这个没啥说的,比较简单. NGINX配置 location ~ /lua_request { #default_type 'text/html'; default_type 'text/json'; content_by_lua_file '/Users/liuhao/my-shell/lua/index.lua'; #content_by_lua_file '/Users/liuhao/my-shell/lua/middle.lua'; } lua代码 --官方包 local cjson = require("cjson") --json操作 local restyRedis = require("resty.redis")--Redis操作 local redis = restyRedis.new() --封装Redis local MyRedis = {db_index=0,use_pool=false} --redis connect function MyRedis:connect() --设置超时(毫秒) redis:set_timeout(2000) --建立连接 local ok, err = redis:connect("127.0.0.1", 6379) if not ok then self.errMsg(

值得学习的C开源项目

给你一囗甜甜゛ 提交于 2020-03-03 00:22:45
                                         C开源项目学习                                                                                           原文: 戳这里   1. Webbench   Webbench 是一个在 linux 下使用的非常简单的网站压测工具。它使用 fork ()模拟多个客户端同时访问我们设定的 URL,测试网站在压力下工作的性能,最多可以模拟 3 万个并发连接去测试网站的负载能力。Webbench 使用C语言编写, 代码实在太简洁,源码加起来不到 600 行。下载链接: http://home.tiscali.cz/~cz210552/webbench.html    2. Tinyhttpd   tinyhttpd 是一个超轻量型 Http Server,使用C语言开发,全部代码只有 502 行(包括注释),附带一个简单的 Client,可以通过阅读这段代码理解一个 Http Server 的本质。下载链接: http://sourceforge.net/projects/tinyhttpd/    3. cJSON   cJSON 是C语言中的一个 JSON 编解码器,非常轻量级,C文件只有 500 多行,速度也非常理想。

OpenResty + Lua + Kafka 实现日志收集系统

喜夏-厌秋 提交于 2020-03-01 00:31:15
1、Kafka 安装 官网下载 kafka_2.11-1.1.1.tgz,解压后,修改kafka的配置文件:config/server.properties broker.id=0 # 在集群内必须唯一 advertised.host.name=192.168.10.100 # 配置对外IP地址,否则链接不上kafka log.dirs=/data/kafka-logs # 配置kafka的存储目录,包含kafka的日志和写入kafka的文件 zookeeper.connect=zk.test.com:2181 # 配置zookeeper的地址 2、启动kafka服务 nohup sh bin/kafka-server-start.sh config/server.properties > /data/kafka-logs/server.log 2>&1 & 启动kafka服务,并将服务端日志写入 server.log 文件 3、创建topic bin/kafka-topics.sh --zookeeper zk.test.com:2181 --create --topic test1 --partitions 1 --replication-factor 1 创建名称为 test1 的topic 4、kafka测试 bin/kafka-console-producer.sh -