https://sourceforge.net/projects/cjson/

解析JSON比较好的轻量级工具,使用比较方便,今天测试发现有些JSON解析失败,但其他工具可以正常解析。

跟踪发现是cJSON对最后一个逗号分隔处理不足。譬如如下:

{"liveList":[{"name":"",},],"code":"",}

},]标识前面的逗号就会处理错误,理论上是空对象。

修改代码cJSon.c

测试代码:

int main(int argc, char * argv[])
{
char * buff = "{\"code\":\"0\",\"isPreview\":\"0\",\"isADFreeFlag\":\"1\",\"logincode\":\"1014\",\"titleName\":\"\",\"nodeName\":\"CCTV2\",\"objType\":\"live\",\"isAudio\":\"false\",\"audioDesc\":\"??:????|nodeId=10080903\",\"playUrl\":\"http://hls.cmvideo.cn:8088/WqkB2MJM359QHiQ2ShzkitfOjzdoiTz8MF+tjo3OiT1HFopoXQNYHgnkuOCcfZeS+VKurfyXjDfwlpH2/E2GcIPjOjisQkuoQ/rua4ZnuCEbgl1aN4DvlGHKCjETOnEQ/rl3/iqecLI7ukacQKRtCb8dCBxtJ2UflZxWNfzYsvABT2DGlQenXBXeeQFMN3gifppTiH9hGcZMozYca2ECqvx0QgZGyDEbJbCTDmOr5zp9sGGBQ/0M3pP0rFOS68Dy/cctv2_49.sdp.m3u8?ec=1\",\"param\":\"contentId=60098984520150511028;nodeId=10242984;objType=live;\",\"img\":\"\",\"uc\":\"\",\"mt\":\"\",\"ucmax\":\"\",\"dlnaRate\":\"\",\"keyword\":\"\",\"livePlayback\":\"true\",\"liveList\":[{\"sTime\":\"00:01\",\"eTime\":\"00:15\",\"name\":\"?????\",},{\"sTime\":\"00:15\",\"eTime\":\"01:12\",\"name\":\"????\",},{\"sTime\":\"01:12\",\"eTime\":\"02:13\",\"name\":\"?????\",},{\"sTime\":\"02:13\",\"eTime\":\"03:11\",\"name\":\"??\",},{\"sTime\":\"03:11\",\"eTime\":\"03:54\",\"name\":\"????\",},{\"sTime\":\"03:54\",\"eTime\":\"04:36\",\"name\":\"????\",},{\"sTime\":\"04:36\",\"eTime\":\"05:07\",\"name\":\"????\",},{\"sTime\":\"05:07\",\"eTime\":\"06:10\",\"name\":\"???\",},{\"sTime\":\"06:10\",\"eTime\":\"07:00\",\"name\":\"???\",},{\"sTime\":\"07:00\",\"eTime\":\"09:00\",\"name\":\"????\",},{\"sTime\":\"09:00\",\"eTime\":\"10:05\",\"name\":\"????\",},{\"sTime\":\"10:05\",\"eTime\":\"10:40\",\"name\":\"????\",},{\"sTime\":\"10:40\",\"eTime\":\"11:10\",\"name\":\"????\",},{\"sTime\":\"11:10\",\"eTime\":\"11:28\",\"name\":\"????\",},{\"sTime\":\"11:28\",\"eTime\":\"11:50\",\"name\":\"????\",},{\"sTime\":\"11:50\",\"eTime\":\"12:30\",\"name\":\"??????\",},{\"sTime\":\"12:30\",\"eTime\":\"13:21\",\"name\":\"????\",},{\"sTime\":\"13:21\",\"eTime\":\"14:33\",\"name\":\"????\",},{\"sTime\":\"14:33\",\"eTime\":\"15:28\",\"name\":\"??????\",},{\"sTime\":\"15:28\",\"eTime\":\"16:03\",\"name\":\"?????\",},{\"sTime\":\"16:03\",\"eTime\":\"16:29\",\"name\":\"????\",},{\"sTime\":\"16:29\",\"eTime\":\"17:11\",\"name\":\"????\",},{\"sTime\":\"17:11\",\"eTime\":\"17:44\",\"name\":\"????\",},{\"sTime\":\"17:44\",\"eTime\":\"18:29\",\"name\":\"???\",},{\"sTime\":\"18:29\",\"eTime\":\"18:52\",\"name\":\"????\",},{\"sTime\":\"18:52\",\"eTime\":\"19:25\",\"name\":\"????\",},{\"sTime\":\"19:25\",\"eTime\":\"20:00\",\"name\":\"????\",},{\"sTime\":\"20:00\",\"eTime\":\"20:30\",\"name\":\"????\",},{\"sTime\":\"20:30\",\"eTime\":\"21:20\",\"name\":\"??????\",},{\"sTime\":\"21:20\",\"eTime\":\"21:56\",\"name\":\"?????\",},{\"sTime\":\"21:56\",\"eTime\":\"22:30\",\"name\":\"??????\",},{\"sTime\":\"22:30\",\"eTime\":\"23:10\",\"name\":\"??????\",},{\"sTime\":\"23:10\",\"eTime\":\"23:43\",\"name\":\"?????\",},{\"sTime\":\"23:43\",\"eTime\":\"23:59\",\"name\":\"?????\",},{\"sTime\":\"23:59\",\"eTime\":\"23:59\",\"name\":\"?????\",},],\"preparam\":\"\",\"nextparam\":\"\",\"subList\":[],\"sTime\":\"20:00\",\"eTime\":\"20:30\",\"curDay\":\"\",\"supportRate\":\"rate5=;rate4=50_8;rate3=49_8;rate2=;rate1=48_8;\",\"matchedRate\":\"rate3\",}"; printf("################,start json:%s \n",buff); cJSON *root;
root = cJSON_Parse(buff); if (!root)
{
printf("######################!!!!!!!!!!!!!!!!!!!!!!!!!!Error before: [%s]\n",cJSON_GetErrorPtr());
return -;
} printf("################end json:\n"); return ;
}

cjson 增强对逗号处理的更多相关文章

  1. ES5对Array增强的9个API

    为了更方便的对Array进行操作,ES5规范在Array的原型上新增了9个方法,分别是forEach.filter.map.reduce.reduceRight.some.every.indexOf ...

  2. 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击

    VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门 ...

  3. 使用css3进行增强

      使用css3进行增强 1,为元素创建圆角 border-radius:25px; .about img{ border: 5px solid #bebebe; float: left; margi ...

  4. JSON格式解析和libjson使用简介(关于cjson的使用示例)

    JSON格式解析和libjson使用简介 在阅读本文之前,请先阅读下<Rss Reader实例开发之系统设计>一文. Rss Reader实例开发中,进行网络数据交换时主要使用到了两种数据 ...

  5. Django学习(九)---Templates过滤器及Django shell和Admin增强

    一.Templates过滤器 过滤器属于django模板语言 修改模板中的变量,从而显示不同内容 {{ value | filter }} 举例:{{ list_nums | length}}    ...

  6. Spring 通知和顾问进行增强

    使用顾问增加前置增强和后置增强 <bean id="1" class="目标对象"></bean> <bean id=" ...

  7. 【转】cJSON 源码分析

    cJSON源码分析 简介 由于C语言汇总,没有直接的字典,字符串数组等数据结构,所以要借助结构体定义,处理json. JSON是一种轻量级的数据交换格式.JSON采用完全独立与语言的文本格式,易于人阅 ...

  8. 【转】cJSON 源码阅读笔记

    前言 cjson 的代码只有 1000+ 行, 而且只是简单的几个函数的调用. 而且 cjson 还有很多不完善的地方, 推荐大家看完之后自己实现一个 封装好的功能完善的 cjson 程序. json ...

  9. cJSON库的简单介绍及使用

    转载:http://www.cnblogs.com/liunianshiwei/p/6087596.html JSON 语法是 JavaScript 对象表示法语法的子集.数据在键/值对中:数据由逗号 ...

随机推荐

  1. python-rrdtool

    https://nagios-plugins.org/doc/guidelines.html nagios检测信息 host GPING OK – rtt min/avg/max/mdev = 0.8 ...

  2. Visual Studio 编辑器打开项目后,一直提醒Vs在忙,解决方法

    今天打开VS2015后,因为这个解决中有很项目,突然就一直现在加载中,点击VS提示在忙,怎么破那?请往下看 第一种方法 1.关闭VS: 2.去C:\Users\<your users name& ...

  3. ES6相关特性(解构赋值)

    解构赋值:本质上是一种匹配模式,等号两边的模式相同,则左边的变量可以被赋予对应的值. 注意:null & undefined 不能解构赋值!!! 数组的解构赋值: let [a,[[b],c] ...

  4. 笨办法学Python(三十二)

    习题 32: 循环和列表 现在你应该有能力写更有趣的程序出来了.如果你能一直跟得上,你应该已经看出将“if 语句”和“布尔表达式”结合起来可以让程序作出一些智能化的事情. 然而,我们的程序还需要能很快 ...

  5. 利用XShell和WinSCP连接本机和Linux虚拟机——Kali部署

    1.XShell支持在本机直接连接Linux终端,加快速度,支持命令的复制粘贴 2.WinSCP 支持本机与Linux的文件复制粘贴 关键:使用SSH协议,所以要在Linux开启ssh服务,下面以Ka ...

  6. Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架

    MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻 ...

  7. centos 6.5 配置nginx环境

    1.卸载系统中默认的php和httpd [root@x ~]# yum remove httpd* php* Loaded plugins: fastestmirror Setting up Remo ...

  8. 【翻译】Emmet(Zen Coding)官方文档 之六 自定义 Emmet

    [说明]本系列博文是依据 Emmet 官方文档翻译的,原文地址为:http://docs.emmet.io/,部分内容已经在博主之前的博文中节选过,为方便已经收藏过之前博文的朋友,没有删除这些博文,仅 ...

  9. 多线程, Thread类,Runnable接口

    多线程 线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程.一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序. 单线程程序:即,若有多个任务只能依次执 ...

  10. 第43章 RTC—实时时钟—零死角玩转STM32-F429系列

    第43章     RTC—实时时钟 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fireg ...