从PHP解析JSON而不使用';json#u解码';或梨';s';服务JSON';

从PHP解析JSON而不使用';json#u解码';或梨';s';服务JSON';,php,json,Php,Json,我正在学校为我的数据挖掘课做一个项目,我想使用stackoverflow API来获取原始数据。我正在看一个关于使用PHP访问它的介绍教程,第一个代码示例根本不起作用。罪魁祸首是json_解码函数。学校服务器上安装的PHP版本为5.1.6,函数只存在>=5.2。在这里搜索我找到了关于使用pear的信息,但是学校的PHP配置为“--不带pear” 我最好的选择是什么来克服这些限制。我不想完全改用另一种语言。可以用另一种语言调用外部函数吗 冒犯的路线是 $response = json_decode

我正在学校为我的数据挖掘课做一个项目,我想使用stackoverflow API来获取原始数据。我正在看一个关于使用PHP访问它的介绍教程,第一个代码示例根本不起作用。罪魁祸首是json_解码函数。学校服务器上安装的PHP版本为5.1.6,函数只存在>=5.2。在这里搜索我找到了关于使用pear的信息,但是学校的PHP配置为“--不带pear”

我最好的选择是什么来克服这些限制。我不想完全改用另一种语言。可以用另一种语言调用外部函数吗

冒犯的路线是

$response = json_decode(http_inflate(file_get_contents($url)));

您可以在不使用PEAR安装过程的情况下安装PEAR库。只需从PEAR网站()下载该文件并手动包含。

您可以直接使用PEAR的JSON支持,它不依赖于其他PEAR库。我相信您所需要的就是

当我想使用JSON编码时,我也遇到过这种情况,但服务器上只有PHPV5.1.6。经过几个小时的尝试,我发现我所要做的只是从我的PHP脚本中包含内容并稍微修改我的AJAX函数(最初是从web上获得的,不是我的工作)

这两份文件都是,希望能让人省心些

java.js

var request;

function runAjax (JSONString, phpScript, cfunc) {
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch(e) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch(e) {
                request = false;
            }
        }
    }
    request.onreadystatechange = cfunc;
    request.open("POST", phpScript);
    request.setRequestHeader("Content-type", "application/json", true);
    request.send(JSONString);
}

function smazVzor (id) {
    var JSONObject = new Object;
    JSONObject.id = id;
    JSONString = JSON.stringify(JSONObject);
    runAjax(JSONString, "./ajax/smaz_vzor.php", function () {
        if (request.readyState == 4) {
            var JSONObject = JSON.parse(request.responseText);
            alert(JSONObject.zprava);
            if (JSONObject.kod == 1) document.location.href = "./index.php";
        }
    });
}
smaz_vzor.php

<?php
    require("../../include/dbconnect.php"); // just some commands for MySQL
    require('../../include/JSON/JSON.php'); // <-- THIS IS IMPORTANT
    $json = new Services_JSON();    // create a new instance of Services_JSON class
    $str_json = file_get_contents('php://input');   // read fiel send by POST method as text
    $decoded = $json->decode($str_json);    // decode JSON string to PHP object

    $sql = "DELETE FROM Obory_vzory WHERE id = '$decoded->id'";
    $response = array();    // create response array
    if (!mysql_query($sql, $pripojeni)) {
        $response['kod'] = 0;
        $response['zprava'] = "Something got wrong.\nError: ".mysql_error();
    } else {
        $response['kod'] = 1;
        $response['zprava'] = "Operation successful.";
    }

    $encoded = $json->encode($response);    // encode array $json to JSON string
    die($encoded);  // send response back to java and end script execution
?>


您只需从pear中获取所需的文件并将其包含()即可,无需安装pear。另外,请务必阅读php手册中有关函数的注释,compat代码通常由用户列出。谢谢。这似乎解决了一半的问题。显然,“http_inflate”需要pecl_http,而我似乎也不明白这一点。我可以像使用JSON.php那样使用没有任何管理员权限的扩展吗?我下载的文件夹里有很多文件,大部分是C。