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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值