破逼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 ...
随机推荐
- SPOJ 1043 GSS1 - Can you answer these queries I
题目描述 给出了序列A[1],A[2],-,A[N]. (a[i]≤15007,1≤N≤50000).查询定义如下: 查询(x,y)=max{a[i]+a[i+1]+-+a[j]:x≤i≤j≤y}. ...
- lavarel中如何使用memcache
lavarel中如何使用memcache 一.总结 一句话总结: composer下载包,配置,使用函数 1.memcache是什么? 键值对内存缓存 MemCache是一个自由.源码开放.高性能.分 ...
- CMS 源码解读
CMS 是”Content Management System” 的缩写,意为” 内容管理系统”. 内容管理系统是企业信息化建设和电子政务的新宠,也是一个相对较新的市场.对于内容管理,业界还没有一个统 ...
- 移动端开发框架Zepto.js
一.概述 Zepto.js是一个轻量的js库,它与jQuery有类似的API. zepto的设计目的是不到10K的通用库,快速下载,有一个熟悉的api-->精力专注在开发上. 流行起来的原因:轻 ...
- JDK1.8 之Lambda表达式
概述 Lambda 表达式是一种匿名函数(对 Java 而言这并不完全正确,但现在姑且这么认为),简单地说,它是没有声明的方法,也即没有访问修饰符.返回值声明和名字. 你可以将其想做一种速记,在你需要 ...
- python3-常用模块之re
正则表达式 定义: 正则表达式是对字符串操作的一种逻辑公式,用事先定义好的一些特定字符.及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑. 是一种独立的规 ...
- 用DataTable填充实体类List
/// <summary> /// 用DataTable填充实体类List /// </summary> public static List<T> FillLis ...
- ES6之主要知识点(八)Symbol
防止属性名的冲突.这就是 ES6 引入Symbol的原因. 它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean).字符串(String). ...
- 全面解决Html页面缓存的问题
页面缓存的问题可能大家都遇到过,很多功能做完没起效果,那么怎么解决这个问题呢?这里给出我的使用的解决方法 对于一个html页面,缓存分3部分,一个是页面内容,一个是css样式,一个是JS文件1.页面内 ...
- nextjs服务端渲染原理
1. 简单的介绍一下 nextjs是react进行服务端渲染的一个工具,默认以根目录下的pages为渲染路由 比如我在pages目录下创建一个index.js文件,然后export default一个 ...