cjfeii 发表于 2016-07-14 11:07

cjson 性能不错

codechurch 发表于 2016-07-20 10:05

自己写一个,不难。

jsoncpp 实现不标准。

yulihua49 发表于 2016-07-21 12:38

本帖最后由 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 10:47

本帖最后由 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 10:57

本帖最后由 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了其中所有的子对象。

windoze 发表于 2016-08-03 13:30

如果你不是特别在乎性能的话,我这儿有一个特别轻量的,就一个头文件:
https://github.com/windoze/fibio/blob/master/include/fibio/http/common/json.hpp

pingmm 发表于 2016-08-10 17:48

json库最关键的不是什么性能,是兼容性,推荐json-c

karma303 发表于 2016-08-10 20:46

学习了~~
页: 1 [2]
查看完整版本: 哪个json库比较好