Json数据日志打印小技巧

     通常涉及到网络通信一般都比免不了涉及到json字符串.最近在使用jsoncpp库做开发时,在日志打印这块儿有些头疼,json字符串本身自带格式,即使序列化之后也会出现很多的"\t""\n"等转意字符.如图:

为了一屏多显示内容,我们需要去掉json的数据格式,可又不能影响其数据内容.因此需要对json数据做一些处理. 代码部分如下:

/*----------------------------------------------------------------------
- @Name:  
- @Discrible:   
- @Param:  
- @Return:   
- @Others: 
-----------------------------------------------------------------------
- @Recode    date       version	        author             modify 
-          ------------------------------------------------------------------
-          20190808      V1.0          VINCENT            Create
- 
------------------------------------ CLASS-----------------------------------*/
bool GetCharIsTrue(char data)
{
  switch(data)
  {
    case '\t':
    case '\n':
    case '\r':
    case ' ':
    {
      return true;
    }
    default:return false;
  }
}



/*----------------------------------------------------------------------
- @Name:  
- @Discrible:   
- @Param:  
- @Return:   
- @Others: 
-----------------------------------------------------------------------
- @Recode    date       version	        author             modify 
-          ------------------------------------------------------------------
-          20190808      V1.0          VINCENT            Create
- 
------------------------------------ CLASS-----------------------------------*/
std::string JsonNoFat(std::string json_str)
{
   json_str.erase(std::remove_if(json_str.begin(), json_str.end(),&GetCharIsTrue), json_str.end());
   return json_str;
}

函数实现: 实现思路是剔除掉json字符串中产生格式的字符,比如'\t','\r','\n',' ';这样的话,不会影响原始数据的展示也达到了让日志更紧凑的目的.这里实现的核心是erase和remove_if的配合操作.remove_if返回使其为真的迭代器位置,erase删除当前迭代器的值.具体定义查阅esrae()和remove_if()

      使用的时候直接调用JsonNoFat返回的字符串就行了.(需要注意的是,这个函数会改变原始字符串,所以用的时候最好用一个中间变量).结果如图:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值