从PHP中的全局对象解析JSON(通过POST发送)

时间:2016-08-10 22:43:10

标签: php json parsing global-variables

我是一名普通的PHP程序员,我最近构建了一个接受传入JSON(通过POST)数据的API。我正在使用此代码将传入的JSON解析为全局对象:

$GLOBALS[json] = file_get_contents("php://input");
$GLOBALS[json] = json_decode($GLOBALS[json]);

该部分工作正常,$GLOBALS[json]的值是(来自系统日志):

{
   "name": "John Doe",
   "state": "DE",
   "zip": "12345"
}

然后,函数(在包含的外部PHP文件中)使用此全局对象来读取数组的各个部分:

$name  = $GLOBALS[json]->name;
$state = $GLOBALS[json]->state;
$zip   = $GLOBALS[json]->zip;

我遇到的问题是这些变量(上面没有直接列出)都没有任何数据。我已经尝试了我在网上找到的每一个没有运气的例子。

仅供参考 - 我也尝试在true函数的末尾使用json_decode选项并尝试将其作为数组(而不是对象)读取,但仍然没有运气。

它是否给我带来问题,因为我从一个全局对象/数组开始,或者我只是想错误地调用密钥对/对象值?

1 个答案:

答案 0 :(得分:0)

首先, 使用true对json进行解码,因此它会为您提供一个数组而不是对象

$GLOBALS['json'] = json_decode($GLOBALS['json'],true);

然后您可以访问您的数据,如下所示

$name  = $GLOBALS['json']['name'];
$state = $GLOBALS['json']['state'];
$zip   = $GLOBALS['json']['zip'];

我在我的本地计算机上运行了上面的代码,并在print_r

之后输出
John Doe
DE
12345