php - 如何修复有缺陷的 JSON 字符串?
问题描述
我需要知道这是什么数据格式以及我使用什么过程从“昵称”获取数据。我从 $_REQUEST 获得了这些数据:
{id:10,Username:gab@gmail.com,nickname:gabe}
这是 JSON 格式的示例。它有引号:
$json = '
{
"type": "donut",
"name": "Cake"
}';
然后你可以通过放置以下行来调用类型:
$yummy = json_decode($json);
echo $yummy->type; //donut
我该如何解决这个问题?
解决方案
那是一个字符串,我们可以使用一个表达式preg_match_all
和 json 它:
$re = '/([^{}]+?):([^{}]+?),|([^{}]+):([^{}]+)/m';
$str = '{id:10,Username:gab@gmail.com,nickname:gabe}';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
$json_str = '{';
foreach ($matches as $value) {
if (!$value[3] && !$value[4]) {
$json_str .= '"' . $value[1] . '":"' . $value[2] . '",';
} else {
$json_str .= '"' . $value[3] . '":"' . $value[4] . '"';
}
}
$json_str .= '}';
var_dump(json_decode($json_str, true));
输出
{"id":"10","Username":"gab@gmail.com","nickname":"gabe"}
array(3) {
["id"]=>
string(2) "10"
["Username"]=>
string(13) "gab@gmail.com"
["nickname"]=>
string(4) "gabe"
}
演示
正则表达式电路
jex.im可视化正则表达式:
推荐阅读
- android-studio - 如何使用 Volley 将 Object 列表转换为 MutableList
- react-native - 如何禁用 RCTView?
- vcf-vcard - 将照片添加到 vCard
- javascript - 如何将对象的属性分配给reactjs中的另一个属性?
- php - 在 CodeIgniter 4.1 模块中使用模型中的语言进行表单验证消息
- git - 如何告诉 git 显示我在上次提交中所做的更改的差异?
- python - update_one 或 insert_many 更新 mongodb 中的记录?
- python - 重复循环步骤,直到满足条件
- rasa - rasa webchat : 使用 kubernetes 将 rasa x 和 rasa 开源连接到网站
- c# - 对于 Visual Studio 2022,IVsProject3.OpenItemWithSpecific 返回 -2147024809