linux下用cjson实现对数据键值对的封装保存

首先需要下载封装好的cjson包包括 cjson.h cjson.c

为方便大家我已上传

下载地址如下

http://download.csdn.net/detail/wuheshi/8353075

编程时加入头文件cjson.h 就可以调用cjson.c里面的函数

打包json数据和解析json数据例子如下:

简单编码实例如下

#include "../../include/myhead.h"

#include "../../include/cJSON.h"

/*对json数据的解析取出其中的有用信息*/

int undo_cjson_pack(char text[],int id,int ctlcmd)

{

cJSON *json, *json_value;

// 解析数据包

json = cJSON_Parse(text);

if (!json)

{

printf("Error before: [%s]\n",cJSON_GetErrorPtr());      //判断是否是json数据

}

else

{

// 解析ID值

json_value = cJSON_GetObjectItem( json , "ID");

if( json_value->type == cJSON_Number )

{

// 从valueint中获得结果

printf("value:%d\r\n",json_value->valueint);

id = json_value->valueint  ;

}

// 解析 控制量

json_value = cJSON_GetObjectItem( json , "ctl_cmd");

if( json_value->type == cJSON_Number )

{

// valuestring中获得结果

printf("cmd:%d\r\n",json_value->valueint);

ctlcmd =json_value->valueint;

//  printf("%s\n",cmd);

}

// 释放内存空间

cJSON_Delete(json);

}

return 0;

}

/*打包数据键值对成json格式再传给字符串*/

char * do_cjson_pack(int idnum,char *str)

{

// 创建JSON Object

cJSON *root = cJSON_CreateObject();

// 加入节点(键值对),节点名称为ID,节点值为123.4

cJSON_AddNumberToObject(root,"ID",idnum);

cJSON_AddStringToObject(root,"ctl_cmd",str);

// 打印JSON数据包

char *out = cJSON_Print(root);

printf("%s\n",out);

// 释放内存

cJSON_Delete(root);

return out;

}

/*

int main()

{

char text[] = "{\"ctl_cmd\":\6,\"ID\":1}";

char *putout = NULL;

int cmd_str = 1;

int num = 9;

putout = do_cjson_pack(num,cmd_str) ;

undo_cjson_pack(text);

printf("%s\n",putout);

free(putout);

return 0;

}

*/

程序有点小改动,运行时有错误的话 可能数据格式有点问题,这里解释作用

时间: 2024-10-11 19:59:43

linux下用cjson实现对数据键值对的封装保存的相关文章

linux下导入、导出mysql数据库命令 下载文件到本地

一.下载到本地 yum install lrzsz sz filename  下载 rz filename  上传 linux下导入.导出mysql数据库命令 一.导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径): 1.导出数据和表结构: mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql #/usr/local/mysql/bin/   mysqldump -uroot -p abc > abc.sql 敲回车后会提示输入密码 2.只导出表

Linux下Tomcat向MySQL插入数据中文乱码解决办法

Linux下Tomcat向MySQL插入数据中文乱码解决办法 一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一直接在linux上面使用insert语句插入中文,正常2.尝试二在tomcat配置文件server.xml中加入useBodyEncodingForURI="true",不行3.尝试三在tomcat配置文件server.xml中再加入URIEncodin

C#语言实现的简易数据键值对照字典类

最近遇到了一个场景,就是在数据库中没有数据字典的情况下,由C#程序临时维护一组类似数据字典功能的类.功能是可以通过键取出值,通过值取出对应的键(仅取第一个匹配的键),类要求具备一定的可扩展性,可以对一些控件(如ComboBox)进行数据源的初始化.因此我自己设计了一个模式,用于实现这个功能. 1.准备工作 建立一个Windows窗体应用程序,程序集名为DataDictTest,里面包含窗体FormMain 窗体FormMain中包括一个下拉菜单ComboBox,一个放置在DataGridView

linux下Java程序插入DB数据中文乱码问题

首先,插入到DB的数据,在Linux下查询的时候,字段显示为??. 再次,在windows连接到db上,查看的结果并不是乱码. 修改Eclipse软件中的编码:如上图:windows菜单->preference->general->content type,Javaclassfile和text都设成utf-8: 然后 在Linux下执行以下的命令: mysql> set names UTF8; 最后,在查询的时候,Linux下的内容,就不是乱码了.

Linux下rsync+inotify实现实时数据同步

一. rsync 1. 什么是rsync rsync 是一个远程数据同步工具, 可以实现本主机内,或跨主机的数据同步.以服务运行时监听在TCP 873端口, rsync演算法可以达到只传送文件变化的部分,而不是整个都传送,因此速度相当的快,性能不错. 所以rsync通常可以作为备份工具来使用. 1.1 rsync基本特点: 1. 可以镜像保存整个目录树或文件系统 2. 可以很容易做到保持原来文件的权限.时间.软硬链接等; (通过rsync的一些参数, 如 -a) 3. 较高的数据传输效率 4.

SecureCRT远程连接Linux下的sqlplus中退格键不能使用之解决方法

^H不是H键的意思,是backspace 主要是当你的终端backspace有问题的时候才需要设置 在linux环境下使用sqlplus,在回删(backspace)时往往会出现 一串的乱码.出现乱码是由于oracle的sqlplus不使用gnu的readline库造成的. 解决方法有2种: 1. 要使用回删键(backspace)时,同时按住ctrl键 2. 设定环境变量 在bash下:$ stty erase ^H 或者把 stty erase ^? 添加到.bash_profile中. 在

linux下的python如何使用tab键补全

一.vim下的补全: pydiction插件 实现功能: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内函数,变量补全 安装步骤: cd ~ wget https://github.com/rkulla/pydiction/archive/master.zip unzip master.zip mkdir -pv ~/.vim/tools/pydiction cp -r pydiction-master/after ~/.vim cp py

程序猿(媛)Shell脚本必备技能之一: 在Linux下如何自动备份mysql数据

作者:荀彧(花名) Background:鉴于QAS数据库曾遭到毁灭性损害,极其桑心L.为了避免这种玉石俱焚的状况再度发生,于是我们找出了一种应对方案.这里给大家分享一下如何实现定时备份mysql数据库的脚本. Target:每天对QAS数据库进行数据及表的备份并且删除掉10天之前的备份文件. Working:三个步骤搞定. Step 1: 准备两个文件 建备份文件夹qas_db_bak,建脚本文件autobackupmysql_qas.sh [[email protected]***** we

Linux 下python 如何设置使用tab键

首先在家目录下创建一个隐藏文件,vi ~/.pythonstartup,内容如下: # python startup file import readline import rlcompleter import atexit import os # tab completion readline.parse_and_bind('tab:complete') # history file histfile = os.path.join(os.environ['HOME'],'.pythonhist