jsoncpp 实现不标准。 本帖最后由 yulihua49 于 2016-07-21 12:40 编辑
linux_c_py_php 发表于 2013-05-21 14:34 static/image/common/back.gif
过来人推荐你用json-cpp,别用json-c.
我一直用json-c-0.9,速度快,功能强,兼容性好,非常好用。0.12更好,增加了int64类型。 本帖最后由 yulihua49 于 2016-08-03 11:14 编辑
linux_c_py_php 发表于 2013-05-21 14:48 static/image/common/back.gif
json-c 有复杂的引用计数, 需要用户操心, 而通常复杂的嵌套会让你根本操心不过来, 内存泄漏和coredump是 ...
引用计数,双刃剑,即是优点也是缺点,关键是你要理解他是干什么的。我一贯避免掉这个坑,但是,现单位他们确实掉这个坑里了。不过经过讲解,都理解了这个机制,现在用的不错。
他们使用json,主要是进行运行时泛型处理和数据的序列化/反序列化。如果仅仅进行数据的序列化/反序列化,还涉及不到引用计数的问题。
另外,这个json包的缺点是没有从对象中删除子对象的功能,没有复制对象的功能。 本帖最后由 yulihua49 于 2016-08-03 11:03 编辑
wyj8888 发表于 2016-07-14 11:04 static/image/common/back.gif
回复 9# yulihua49
你好, 能把你写的那个文档发一份给我吗,谢谢!
文档给你发了。这个文档回避了引用计数问题,要求你一个对象只能在一个json里,不要在多个json对象/共享。
其实多共享,管理引用计数,原则很简单:
一个new操作,只对应一个json_object_put操作,就是说,无论这个对象被转移多少次,在多少个位置停留过,只能json_object_put一次。
如果你需要转移后仍能独立使用该对象,那就在转移时进行json_object_get(), 这时你必须负责对这个对象进行,且只进行一次json_object_put。
简单说,一个对象可能被加入多个大的对象,最大的对象put时就put了其中所有的子对象。 如果你不是特别在乎性能的话,我这儿有一个特别轻量的,就一个头文件:
https://github.com/windoze/fibio/blob/master/include/fibio/http/common/json.hpp json库最关键的不是什么性能,是兼容性,推荐json-c 学习了~~
页:
1
[2]