zoukankan      html  css  js  c++  java
  • C语言JSON序列化/反序列化

    最近想找一个C语言处理嵌套结构体和结构体数组的json库,理想的是能够很容易处理复杂结构体嵌套,并且使用简单的,但是没找到比较合适的,于是打算自己封装一个;

    两个问题:

    1. C语言结构体本身没有元数据,这也就没法在生成过程中自动分析类型进行处理,所以,需要生成对应结构体的元数据信息,根据元数据完成对结构体的序列化和反序列化;
    2. 结构体的嵌套很复杂,需要支持多层结构体和结构体数组直接互相嵌套的序列化反序列化,于是考虑使用递归函数,结合1中的元数据,进行结构体偏移和处理;

    考虑如下步骤:

    1. 配置xml文件,文件中配置结构体,结构体中的成员属性,以及它们之间的关系;
    2. 结合Tinyxml库编写解析xml文件的工具,通过这个工具生成包含结构体,结构体元数据(包含结构体关系,成员名称,类型,偏移,大小等),序列化/反序列化接口的头文件;
    3. 抽离公共的json操作函数到公共头文件,这些操作函数通过元数据和偏移的方式处理结构体和json,更深入部分则使用了cJSON库;
    4. 模块引用2中生成的头文件,然后通过结构体指针,即可完成结构体序列化成json,以及json反序列化成结构体;

    花了两天时间来做这些事情,初步测试了下,功能正常,也达到了我预期的一行代码序列化,一行代码反序列化的高级语言的json操作特性;

    总之,满意;

  • 相关阅读:
    SqlLiteHelper:基于C#的SqlLite数据库访问基类
    SQL注入专题整理帖
    SQLite数据库查询优化
    php mysql与mysqli 区别
    PHPCMS V9模板制作常用变量表
    实用正则手机和邮箱
    windows2003+iis6.0+php(fastcgi)5.3+wincache+memcached
    ajax 写法
    php防注入,表单提交值转义
    IE6下的两个兼容问题调试
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11767250.html
Copyright © 2011-2022 走看看