在引用了第三方数据时,数据源通过转义,将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+)“,只能用来处理字母开头的键值,如果该键值是数字开头的则该方案无能为力。
本文介绍了一种修复缺少双引号的JSON键的方法,提供了PHP和C++的实现,确保键值对正确解析。
1652

被折叠的 条评论
为什么被折叠?



