我正在寻找一种在C中实现序列化机制的有效方法。我知道将数据存储在JSON中会很简单,然后在解析过程中重新初始化所有内容。
但是我想知道是否有可能(或者值得)编写一些只需要我的struct(包含动态分配的数据),将其所有数据和所有指针转换为缓冲区的东西,所以我可以放置它缓冲到文件中。然后我会读取文件,检索内容,malloc文件内容大小的位置,并将内容放入该位置。
我觉得可以这样做(将所有指针转换为某种本地指向方案,并将所有结构适当地放入缓冲区以匹配这些指针)。我想知道这样的第三方序列化程序是否存在,或者是否值得实现它。
答案 0 :(得分:3)
您可以查看协议缓冲区:http://code.google.com/p/protobuf/,它们具有不错的c tool support
但是,根据我的经验,首先要用最简单,最用户可读的方式(用于调试序列化数据)。设计时考虑到您可能需要稍后更改它。
然后,如果磁盘或速度限制绝对正确,那么你需要切换到更好的东西。基本上就像(几乎)所有事情都在最后进行优化。