c++中对于json的key不带双引号的问题修复

在引用了第三方数据时,数据源通过转义,将json的key上双引号给去掉了。
在PHP开发时,可以通过正则表达式替换方式来补充丢失的双引号,处理代码如下

function ex_json_decode($s, $mode=false) 
{
  if(preg_match('/\w:/', $s))
    $s = preg_replace('/(\w+):/is', '"$1":', $s);
  return json_decode($s, $mode);
}
在C++中,我用tr1的正则表达式处理,将源字符串进行修复,具体处理代码如下
std::string fixProblemJsonString(const std::string& jsonString) 
{
    std::regex_constants::syntax_option_type fl = std::regex_constants::icase;
    std::regex regReplaceExp("([a-zA-Z]\\w*):", fl);
    return std::regex_replace(jsonString, regReplaceExp, "\"$1\":");
}
说明:

我在此代码中,利用了一个规则” ([a-zA-Z]\w*)“,只能用来处理字母开头的键值,如果该键值是数字开头的则该方案无能为力。偷笑

转载于:https://www.cnblogs.com/sanghg/p/4073492.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值