破逼Json,该死的Json库,操了
结果,我现在用这破逼库,本来打算再深层次封装一下,把Json封装成结构体类似的访问方式,比如
json_t Json_getJsonArrayWithIndex( json_t *jroot , char * cstrKey , int index );
根据索引获取Json内部数组内第index个object元素
我内部首先根据Key从root获取数组,然后,在数组内部根据index获取object元素。
但是,操了,我把数组释放了之后,我获取到的object也被释放了,谁规定的爹死了儿子必须跟着一起死。操了,这是什么逻辑。
然后就好办了,这次,爹死了一次,下次再想找爹也找不到了。以后再次用Key获取root永远失败。
操了,这么简单的字符串操作,怎么到这里就这么麻烦了。不就是来回判断几个大括号,中括号,然后做字符串匹配么。
操了,我就不明白,这帮B是为了显示自己对操作系统的深刻理解还是显示自己在编程方面的高深造诣,这么简单的东西,竟然还使用了引用计数。这么简单的字符串操作,犯得上么,划得来么。当我的头告诉我它使用了引用计数,不能直接释放的时候,我浑身冒冷汗啊,这破逼玩意。。。真真的是太伟大了。
不知道是我对这破逼玩意的理解不够深刻,还是我用的有什么毛病,反正这东西是不能满足我的需求,作为一个C/C++程序员,代码的灵活性是十分重要的。我可不是JAVA程序员,一个功能就那么几个实现办法。
我没有调试环境,公司的调试环境我又用不到,我可以在我的程序里面,LoadLibrary一个MFC的DLL,然后弹出一个对话框,自己做控制台,写外挂不就这么回事么。我是C/C++程序员,我需要代码的灵活使用。
但是这个破逼库。我实在不想说啥了。
个人从来不喜欢用第三方库,安全性,灵活性,完全没有保障,一丁点都没有保障。
json = json_object_get( jroot , "routes" );
Json_getJsonStringToInt( json , "count" , &j );
strT = (int *)buffer;
*strT = j;
for ( i = 0 ; i < j ; i++ )
{
strT[1+i] = (int)( buffer + sizeof(int) * ( j + 1 ) + k ) ;
jsonarr = json_array_get( jsont , i );
Json_getJsonString( jsonarr , "name" , strA );
cq_decodeUtf8( strA , -1 , strW , 100 );
cq_wcscpy( (cqWCHAR *)(strT[1+i]) , strW );
k += ( wcslen( strW ) + 1 ) * 2;
json_decref( jsonarr );
}
json_decref( json );
就这么简短的一段代码,我就不知道我哪里写错什么了。崩了, json_decref( jsont ); 执行到这里就崩。
破逼Json,该死的Json库,操了的更多相关文章
- 一个用C++写的Json解析与处理库
什么是Json?这个库能做什么? JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is e ...
- 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。
Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...
- 【转】json格式化、高亮库jsonFormater
http://leo108.com/pid-1996.asp JsonFormater 基于jQuery的json格式化.高亮库 核心代码参考天马行空工作室,本人只做了模块化和一些代码优化. demo ...
- struct2json -- C结构体与 JSON 快速互转库V1.0发布
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/zhutianlong/article/d ...
- java中常见的json解析方法、库以及性能对比
常见的json解析有原生的JSONObject和JSONArray方法,谷歌的GSON库,阿里的fastjson,还有jackson,json-lib. Gson(项目地址:https://githu ...
- Boost.JSON Boost的JSON解析库(1.75首发)
目录 目录 Boost的1.75版本新库 JSON库简介 JSON的简单使用 编码 最通用的方法 使用std::initializer_list json对象的输出 两种对比 解码 简单的解码 增加错 ...
- 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操
目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
随机推荐
- Python-函数基础(2)
目录 可变长参数 形参 实参 函数对象 函数嵌套 名称空间与作用域 名称空间 内置名称空间 局部名称空间 全局名称空间 执行顺序 搜索顺序 作用域 全局作用域 局部作用域 global nonloca ...
- springboot与分布式(zookeeper+dubbo)
docker安装zookeeper命令: docker pull zookeeper:3.4.14 docker启动zookeeper命令: docker run --name zk01 -p 218 ...
- 修改数组中对象的key值
遇见场景:echart图表中后台返回我的数据,后台无法修改key值,但是echart渲染图表的时候,需要用 var m2R2Data= [ {value:335,name:"种类01 335 ...
- 菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t[转]
菜鸟nginx源码剖析数据结构篇(一)动态数组ngx_array_t Author:Echo Chen(陈斌) Email:chenb19870707@gmail.com Blog:Blog.csdn ...
- 02.vs插件 获取项目和解决方案路径
获取项目 解决方案路径 /// <summary> /// 获取并设置项目和解决方案绝对路径 /// </summary> /// <returns></re ...
- Android之RelativeLayout相对布局
1.相关术语解释 1.基本属性 gravity :设置容器内组件的对齐方式 ignoreGravity : 设置该属性为true的组件,将不受gravity属性的影响 2.根据父容器定位 layout ...
- 【DM642学习笔记一】关于Can't Initialize Target CPU的一种解决方法 : Error 0x80000240
花了几天时间,终于可以顺利进入ccs软件开始学习了! 我使用的是瑞泰公司的ICETEK-DM642-IDK-M图像处理系统(ICETEK5100USB仿真器,仿真芯片为DM642).使用ccs2.21 ...
- Win7下SQLServer访问虚拟机上的MySQL
一.确保Win7能telnet通MySQL端口,防火墙设置可参考http://www.cnblogs.com/ShanFish/p/6519950.html二.配置系统DSN1.在Win7上安装MyS ...
- GitHub for Visual Studio使用讲解
从VS2015起(应该是吧?),微软已经在VS中集成了GitHub,方便开发者对项目进行版本控制. 扩展包下载地址:https://aka.ms/ghfvs 其实VS2015的安装包中已经自带了这个扩 ...
- springboot新增jsp的支持
一.添加依赖 <!-- 添加对jsp的支持 --> <!-- web 依赖 --> <dependency> <groupId>org.springfr ...