PHP输出json Web服务

时间:2017-03-19 06:39:46

标签: php json web-services

我是PHP的新手,我来自.net的背景。我正在尝试创建Web服务,它将从URL获取参数并处理业务逻辑,然后以jSON格式输出。

这是我的代码

<?php
    $data = '';
    $Site = $_GET['COUNTRY_SITE'];
    $Language = $_GET['LANGUAGE'];

    $data = "{\"Site\":" . "\"" . $Site . "\"" . ",\"Language\":" . "\"" . $Language . "\"" . "}";
    //header('Content-type: application/json');
    //echo $data;
    $x =  json_decode($data,true);
    var_dump($x);

?>

我的输出低于输出

array(2) {
  ["Site"]=>
  string(5) "India"
  ["Language"]=>
  string(2) "GB"
}

为什么我没有得到这样的输出

{
"Site":"India",
"Language":"GB"
}

有人可以帮助我,并在可能的情况下解释

5 个答案:

答案 0 :(得分:1)

替换 var_dump($x);echo $x = json_encode(json_decode($data,true),JSON_PRETTY_PRINT);

备注:

  1. json_decode($data,true)这将输出一个数组。
  2. json_encode(json_decode($data,true),JSON_PRETTY_PRINT);这将在漂亮视图中将数组更改为json格式
  3. <强>输出:

    {
        "Site": "s",
        "Language": "ss"
    }
    

答案 1 :(得分:1)

<?php
    $data = '';
    $Site = $_GET['COUNTRY_SITE'];
    $Language = $_GET['LANGUAGE'];

    $data = "{\"Site\":" . "\"" . $Site . "\"" . ",\"Language\":" . "\"" . $Language . "\"" . "}";
    //header('Content-type: application/json');
    //echo $data;
    $x =  json_encode(json_decode($data,true),JSON_PRETTY_PRINT);
    var_dump($x);

?>

如果您想要动态JSON结果:

<?php
echo json_encode($_GET,JSON_PRETTY_PRINT);
?>

答案 2 :(得分:1)

你回忆的是一个基于你构建的JSON字符串的PHP数组,$ data。

但是你应该反转你的流程并构建一个php数组,然后使用json_encode()为你构建字符串。这将确保json始终正确格式化。

<?php
$data = [
  'Site' => $_GET['COUNTRY_SITE'],
  'Language' => $_GET['LANGUAGE']
];

header('Content-type: application/json');
echo json_encode($data, JSON_PRETTY_PRINT);

JSON_PRETTY_PRINT选项将使用空格对其进行格式化,以便阅读起来更加愉快,但您可以将其删除以压缩输出。

答案 3 :(得分:1)

您正在手动创建JSON,然后对其进行解码。事实上,可以预期输出。我认为您应该使用PHP工具将对象转换为JSON:

<?php
    $data = '';
    $Site = $_GET['COUNTRY_SITE'];
    $Language = $_GET['LANGUAGE'];

    //Associative array
    $data = array("Site" => $Site, "Language" => $Language);    

    $x =  json_encode($data, JSON_PRETTY_PRINT);
    var_dump($x);

?>

答案 4 :(得分:1)

试试此代码

<?php
    $data = '';
    $Site = $_GET['COUNTRY_SITE'];
    $Language = $_GET['LANGUAGE'];
    $data =array('Site'=>$Site,'Language'=>$Language);

    header('Content-type: application/json');

    $x =  json_encode($data);
    var_dump($x);

?>