我是一名普通的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
选项并尝试将其作为数组(而不是对象)读取,但仍然没有运气。
它是否给我带来问题,因为我从一个全局对象/数组开始,或者我只是想错误地调用密钥对/对象值?
答案 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