我是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"
}
有人可以帮助我,并在可能的情况下解释
答案 0 :(得分:1)
替换
var_dump($x);
至echo $x = json_encode(json_decode($data,true),JSON_PRETTY_PRINT);
备注:强>
json_decode($data,true)
这将输出一个数组。json_encode(json_decode($data,true),JSON_PRETTY_PRINT);
这将在漂亮视图中将数组更改为json格式<强>输出:强>
{
"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);
?>