to_json,cgi自动输出json, 也方便调试

C++开发 cgi, 经常需要输出json格式的数据。有些数据有重复的元素,每次写这些东西既容易出错,又繁琐。 在查看msgpack这个序列化库代码的时候,受到启发,写了个to_json.hpp的库,可以方便输出json数据。

使用范例:

#include "to_json.hpp"

#include <stdio.h> 

 

struct A 

    int a; 

     struct B { 

        int i; 

        std::string name; 

        std::vector<std::string> other; 

        DEF_TO_JSON_MEM3(i, name, other) 

    }; 

 

   std::vector<int> b; 

   B c; 

}; 

 

DEF_TO_JSON3(A, a, b, c) 

 

int main(int argc, const char *argv[]) 

    A a; 

    a.a = 1; 

    a.b.push_back(2); 

    a.b.push_back(3); 

    a.b.push_back(4); 

    a.c.i=4; 

    a.c.name="piboye"; 

    a.c.other.push_back("piboye1"); 

    a.c.other.push_back("piboye2"); 

 

    std::string out = to_json(a); 

    printf("%s\n", out.c_str()); 

 

return 0; 

输出:

   {"a":1,"b":[2,3,4],"c":{"i":4,"name":"piboye","other":["piboye1","piboye2"]}}

DEF_TO_JSON3 定义个全局的 to_json函数, 可以格式化类型 A, 3 表示要输出类的3个成员。

DEF_TO_JSON_MEM3 表示定义类的成员方法 to_json

to_json.hpp.pump 是借鉴了 gtest使用的 pump.py工具来减少重复代码。

to_json 不光可以实现cgi吐 json, 可以用于调试你的程序,比如打日志的时候输出某个对象的值。

LOG(DEBUG," var a is %s", to_json(a).c_str());


原文链接: https://www.cnblogs.com/napoleon_liu/archive/2011/09/20/2182291.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    to_json,cgi自动输出json, 也方便调试

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/32728

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午9:52
下一篇 2023年2月8日 上午9:52

相关推荐