我是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"
}
如果可能的话,有人可以帮助我并解释
您正在手动创建 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);
?>
替换 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"
}
你回显出来的是基于你构建的 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 选项将使用空格格式化它,以便阅读起来更愉快,但您可以删除它以压缩输出。
<?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);
?>
试试这段代码
<?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);
?>