破逼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 ...
随机推荐
- Git命令汇总(转)
转自:http://blog.csdn.net/esrichinacd/article/details/17645951 图片看不清请点击放大
- iOS之CGPath的应用(二)
1.矩形路径 CG_EXTERN CGPathRef CGPathCreateWithRect(CGRect rect, const CGAffineTransform * __nullable tr ...
- iOS的Runtime机制下给类别(category)添加属性、替换原有类的方法执行
一.Runtime的理解 OC是面向对象的语言这是常识,其实就是通过Runtime机制动态创建类和对象,这里只是简单的运用runtime的使用! 二.类别(category)添加属性_使用前记得导入头 ...
- JSOI 2016 扭动的字符串
JSOI 2016 扭动的字符串 题面描述 给出两个长度为\(n\)的字符串\(A,B\) \(S(i,j,k)\)表示把\(A\)中的\([i,j]\)和\(B\)中的\([j,k]\)拼接起来的字 ...
- IDEA2018激活码
请复制如下内容到文本编辑器(如notepad++)把博客的内容去掉 N757JE0KCT-eyJsaWNlbnNlSWQiOiJONzU3SkUwS0NUIiwibGljZW5zZWVOYW1lIjo ...
- NOIP2016提高A组 A题 礼物—概率状压dp
题目描述 夏川的生日就要到了.作为夏川形式上的男朋友,季堂打算给夏川买一些生 日礼物. 商店里一共有n种礼物.夏川每得到一种礼物,就会获得相应喜悦值Wi(每种礼物的喜悦值不能重复获得). 每次,店员会 ...
- js检测到如果是手机端就跳转到手机端的网址代码
if((/AppleWebKit.*Mobile/i.test(navigator.userAgent)||/MIDP|SymbianOS|NOKIA|SAMSUNG|LG|NEC|TCL|Alcat ...
- vue v-for详解
1.Vue动态渲染列表------v-for用法详解: Html: <figure v-for="list in lists"> <div> ...
- Miller Rabin算法学习笔记
定义: Miller Rabin算法是一个随机化素数测试算法,作用是判断一个数是否是素数,且只要你脸不黑以及常数不要巨大一般来讲都比\(O(\sqrt n)\)的朴素做法更快. 定理: Miller ...
- 机器学习入门:K-近邻算法
机器学习入门:K-近邻算法 先来一个简单的例子,我们如何来区分动作类电影与爱情类电影呢?动作片中存在很多的打斗镜头,爱情片中可能更多的是亲吻镜头,所以我们姑且通过这两种镜头的数量来预测这部电影的主题. ...