【问题标题】:Parsing JSON (sent via POST) from a global object in PHP从 PHP 中的全局对象解析 JSON(通过 POST 发送)
【发布时间】:2016-08-10 22:43:10
【问题描述】:

我是一名普通的 PHP 程序员,我最近构建了一个 API,可以接受传入的 JSON(通过 POST)数据。我正在使用此代码将传入的 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;

我遇到的问题是这些变量(上面直接列出)都没有任何数据。我已经尝试了所有可以在网上找到的示例,但都没有成功。

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

是因为我从全局对象/数组开始,还是我只是试图错误地调用密钥对/对象值?

【问题讨论】:

    标签: php json parsing global-variables


    【解决方案1】:

    首先, 使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-02
      • 2014-05-20
      • 2015-06-14
      • 1970-01-01
      • 2020-04-29
      • 2013-02-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多