破逼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 ...
随机推荐
- BZOJ 3090: Coci2009 [podjela] (树形背包)
3090: Coci2009 [podjela] Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 45 Solved: 31[Submit][Statu ...
- springboot导入excel到mysql
@Controller @RequestMapping(path = "/excel") public class ImportController { @Autowired pr ...
- java基础之final关键字
final: 意为终态.在java中得注意以下四点: 1.final是一个修饰符,可修饰变量,方法,类. 2.final修饰子类不可以被继承. 3.final修饰的方法不可以被重写(覆盖) 4.对于一 ...
- oracle中utl_file包读写文件操作实例学习
在oracle中utl_file包提供了一些操作文本文件的函数和过程,学习了一下他的基本操作 1.创建directory,并给用户授权 复制代码 代码如下: --创建directory create ...
- elasticsearch filters特性
使用filters优化查询 ElasticSearch支持多种不同类型的查询方式,这一点大家应该都已熟知.但是在选择哪个文档应该匹配成功,哪个文档应该呈现给用户这一需求上,查询并不是唯一的选择.Ela ...
- property中ref、value、name的区别
转载: 版权声明:本文为CSDN博主「qq_36098284」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https://blog.csdn.net ...
- sscanf linux-c从一个字符串中读进与指定格式相符的数据
https://www.cnblogs.com/lanjianhappy/p/6861728.html 函数原型: Int sscanf( string str, string fmt, mixed ...
- 如何将Map键值的下划线转为驼峰
本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:如何将Map键值的下划线转为驼峰: 例,将HashMap实例extMap键值下划线转为驼峰: 代码: HashMap<String ...
- parameter–key parameters
http://www.tweakers.fr/timings.html -Cas# Latency (tCL).Number of clocks that elapses between the me ...
- python进阶_浅谈面向对象进阶
python进阶_浅谈面向对象进阶 学了面向对象三大特性继承,多态,封装.今天我们看看面向对象的一些进阶内容,反射和一些类的内置函数. 一.isinstance和issubclass class F ...