PHP的json_decode不支持,有什么替代方法吗?

3
作为标题指定的内容,我的托管提供商不支持json_decode,因此我需要找到一种方法来适应我的代码以实现相同的效果,但不使用JSON。以下是我的代码:
jQuery:
    var allLocations = [];

    $(".locations").each( function(i, location) {
        // for each location block
        location = $(location);
        var loc = {
            'province' : $("select[data-loc*='province']", location).val(),
            'town' : $("select[data-loc*='town']", location).val()
        };
        allLocations.push( loc );
    });

        //POST the locations information
        $.ajax({
                type: 'POST',
                url: 'locations.php',
                dataType: 'json',
                data: { locations: JSON.stringify(allLocations), uid: uid },
                success: function(data){
                    //alert(data)
                }
        });

PHP:

$json = $_POST['locations']; 
$uid = $_POST['uid']; // $json is a string
$json_array = json_decode($json, true); 

mysql_connect('localhost','user','pass') or die(mysql_error());
mysql_select_db('eskom_products') or die(mysql_error());

//insert the locations into the database
while($json_array as $key){
    $query = mysql_query("INSERT INTO suppliersLocations (supplier_id, province, town) VALUES('".$uid."', '".$key['province']."', '".$key['town']."' ) ") or die(mysql_error());
}

echo $text;

因此,正如您所看到的,我正在获取每个位置的省份和城镇值,并创建一个JSON对象,然后通过$.ajax发送到PHP文件,但现在由于json_decode无法正常工作,因此我需要尝试找到另一种解决问题的方法。我想尝试将关联数组传递给php文件,但我想知道您们的意见,并且是否有更好的方法来实现所需的结果。
提前感谢!

2
在尝试使用替代方案之前,我建议先向托管提供商询问是否计划升级到5.2版本,可以委婉地询问一下是否有可能加快升级的进程。 - Pekka
而且在PHP二进制文件之外的JSON(例如在PHP脚本库中)可能会很慢并且容易出现错误。 - Halil Özgür
5个回答

1

对于 PHP 版本早于 5.2(其中包含了 json_*)的替代实现是 json_decode。它被称为 jsonwrapper,并且在我之前做的一个项目中表现得非常好。

或者您可以查看一些 PEAR 包,例如 Service_JSON


如果我没记错的话,它只添加了 json_encode 函数,而不是我真正需要的 json_decode 函数,有其他替代方案吗? - Odyss3us

1

似乎Solar和Zend框架是最好的,有什么建议可以包含它们吗?我不知道从哪里开始。 - Odyss3us
这里有一个很好的例子:http://thecodecentral.com/2007/09/13/easy-json-encodingdecoding-in-php - Timo Haberkern

0

0

就是你要找的东西。


当我尝试这样做时,我得到了这个"[恶意或不正确的JSON字符串]",但是我发送的是与json_decode使用相同的JSON字符串,我认为这个类不够强大。 - Odyss3us
嗯,我没有遇到任何问题,但是有很多实现方法可以适用(请参见其他答案)。 - Thariama

-1

看起来是php配置文件中一个不常见的设置影响了json_decode,一旦我禁用它,一切都正常了。谢谢大家的帮助!我会尽快编辑这个答案,描述我是如何让它工作的。


4
"obscure setting" 的更多细节可能会有所帮助。 - Matthieu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接