当前位置: 首页 > news >正文

【cJSON】cJSON 实例

 C++ Code 
主要函数:
    【1】常用创建
    【创建JSON对象】cJSON *cJSON_CreateObject( void );
    【创建JSON数组】cJSON *cJSON_CreateArray( void );
    【2】常用添加
    【向对象中添加对象】voidcJSON_AddItemToObject(cJSON *object, const   char  *string,cJSON *item);
    【向数组中添加对象】void cJSON_AddItemToArray(cJSON *array, cJSON *item);
    【向对象中添加数值】cJSON_AddNumberToObject(object,name,n)
            【向对象中添加字符串】 cJSON_AddStringToObject(object,name,s)
示例: #include #include   "cJSON.h" char  *makeJson()
{
    cJSON *pJsonRoot  =  NULL ;
    cJSON *pIntArray  =  NULL ;
    cJSON *pCommArray =  NULL ;
    cJSON *pSubJson   =  NULL ; char    *p          =  NULL ; int  intarr[ 5 ] = { 0 ,  1 ,  2 ,  3 ,  4 };  //整数数组
    pJsonRoot = cJSON_CreateObject();  //创建JSON对象 if ( NULL  == pJsonRoot)
    { //error happend here          return   NULL ;
    }
    cJSON_AddStringToObject(pJsonRoot,  "hello" ,  "hello world" );  //添加一个值为字符串的键值对"hello":"hello world"     cJSON_AddNumberToObject(pJsonRoot,  "number" ,  10010 );         //添加一个值为数值的键值对"number": 10010     cJSON_AddBoolToObject(pJsonRoot,  "bool" ,  1 );                 //添加一个值为布尔的键值对"bool": 1
    pSubJson = cJSON_CreateObject();      //创建另一个json对象作为子对象 if ( NULL  == pSubJson)
    { // create object faild, exit         cJSON_Delete(pJsonRoot);          //删除pJsonRoot 及其子对象          return   NULL ;
    }
    cJSON_AddStringToObject(pSubJson,  "subjsonobj" ,  "a sub json string" );  //添加一个值为布尔的键值对     cJSON_AddItemToObject(pJsonRoot,  "subobj" , pSubJson);                    //将对象pSubJson添加到pJsonRoot中,成为键值对 "subobj":pSubJson //数值数组     pIntArray = cJSON_CreateIntArray(intarr,  5 );  //为intarr创建一个数值数组对象,     cJSON_AddItemToObject(pJsonRoot,  "IntArr" , pIntArray);   //将对象pIntArray添加到pJsonRoot中,成为键值对 " IntArr ":pIntArray //通用数组
    pCommArray = cJSON_CreateArray(); //创建数组对象      //cJSON_AddItemToArray(cJSON *array, cJSON *item);//向数组中添加对象     cJSON_AddNumberToObject(pCommArray,  "num" ,  2 );              //向数组中添加数值cJSON_AddNumberToObject(object,name,n)     cJSON_AddStringToObject(pCommArray,  "str" ,  "hopeview" );     //向对象中添加字符串 cJSON_AddStringToObject(object,name,s)
    cJSON_AddItemToObject(pJsonRoot,  "pCommArray " , pCommArray);   //将对象pCommArray添加到pJsonRoot中,成为键值对 " pCommArray ":pCommArray
    p = cJSON_Print(pJsonRoot);    //json对象转为json字符串用于传输 // else use :      // char * p = cJSON_PrintUnformatted(pJsonRoot);      if ( NULL  == p)
    { //convert json list to string faild, exit          //because sub json pSubJson han been add to pJsonRoot, so just delete pJsonRoot, if you also delete pSubJson, it will coredump, and error is : double free         cJSON_Delete(pJsonRoot);  //删除pJsonRoot 及其子对象          return   NULL ;
    } //free(p);
    cJSON_Delete(pJsonRoot);  //释放json对象     printf( "myJson is:%s" ,p); return  p;                //返回json字符串,注意外面用完p要记得释放空间。//free(p); }

相关文章:

  • 【yum/apt-get】yum/apt-get/rpm/dpkg/brew之间的区别
  • 【删除重复记录】SQL删除重复记录
  • 【myISAM和innoDB】mySql的引擎myisam和innodb的区别/mysiam
  • 【文档/键值数据库】文档数据库和键值数据库有什么区别
  • 【JDBC与JPA】JDBC与JPA
  • Apache+Tomcat配置转发
  • 【SQLite】SQLServerCompact/SQLiteToolboxVS的SQLite插件使用
  • 【mysql索引】MySQL索引原理及慢查询优化
  • 【趋势和新技术】趋势和技术
  • 【mysql中文编码】mysql中文乱码中文编码问题
  • 【RPC】为什么需要RPC,而不是简单的HTTP接口
  • 【JAVA】java中implements和extends的使用小结
  • 【postgreSQL】Postgres-XL--基于PostgreSQL的开源分布式实现
  • 【python C结构体】Python Ctypes结构体指针处理(函数参数,函数返回)
  • 【慢查询log】MySQL慢查询日志的配置与使用教程
  • python3.6+scrapy+mysql 爬虫实战
  • 【刷算法】从上往下打印二叉树
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • flutter的key在widget list的作用以及必要性
  • Java读取Properties文件的六种方法
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • vagrant 添加本地 box 安装 laravel homestead
  • 产品三维模型在线预览
  • 工程优化暨babel升级小记
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 通信类
  • 源码安装memcached和php memcache扩展
  • 在Unity中实现一个简单的消息管理器
  • 走向全栈之MongoDB的使用
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 进程与线程(三)——进程/线程间通信
  • 我们雇佣了一只大猴子...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​用户画像从0到100的构建思路
  • #include
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (利用IDEA+Maven)定制属于自己的jar包
  • (一)基于IDEA的JAVA基础1
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)ObjectiveC 深浅拷贝学习
  • (转)Sublime Text3配置Lua运行环境
  • (转)VC++中ondraw在什么时候调用的
  • (转)visual stdio 书签功能介绍
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • .NET Project Open Day(2011.11.13)
  • .Net Redis的秒杀Dome和异步执行
  • .NET 的程序集加载上下文
  • .Net6 Api Swagger配置
  • .NET的数据绑定
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET项目中存在多个web.config文件时的加载顺序
  • .NET中 MVC 工厂模式浅析