You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将类JSON格式字符串转换为PHP数组?

解决类JSON字符串转PHP数组的问题

这种类JSON字符串我之前也碰到过,核心问题就是键名没加双引号,不符合标准JSON的要求,直接用json_decode()肯定转不出来,得先把它改成标准格式才行。下面给你两种靠谱的处理方案:

方法一:正则替换转标准JSON(推荐)

因为你的键名都是lng、lat这类简单的字母标识符,用正则匹配所有键名:的格式,给键名加上双引号就能转成标准JSON,再解码成数组就很简单了:

// 假设这是你获取到的类JSON字符串
$nonStandardJson = '[{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000}]';

// 正则匹配键名,给它加上双引号
$standardJson = preg_replace('/(\w+):/', '"$1":', $nonStandardJson);

// 解码成PHP关联数组(第二个参数true表示转数组,而非对象)
$coordsArray = json_decode($standardJson, true);

// 检查解码是否成功
if (json_last_error() === JSON_ERROR_NONE) {
    print_r($coordsArray); // 这里就能看到转好的数组啦
} else {
    echo 'JSON解码失败:' . json_last_error_msg();
}

方法二:用eval应急(谨慎使用)

如果你的字符串来源绝对安全(比如是自己系统生成的,不会有恶意代码),可以用eval直接把类JSON转成PHP数组,但这个方法有安全风险,万一字符串里混了恶意代码会被执行,所以尽量不用:

$nonStandardJson = '[{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000},{lng: -0.000000, lat: 10.000000}]';

// 把类JSON的{}改成PHP数组的[],再用eval执行
$coordsArray = eval('return ' . str_replace(['{', '}'], ['[', ']'], $nonStandardJson) . ';');

print_r($coordsArray);

划重点:eval方法一定要谨慎,只有完全信任字符串来源时才考虑用,优先选第一种正则方案,安全又稳定。

内容的提问来源于stack exchange,提问作者user7236046

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:05:08