在 PHP 中访问 JSON 元素

Posted

技术标签:

【中文标题】在 PHP 中访问 JSON 元素【英文标题】:Accessing JSON elements in PHP 【发布时间】:2015-06-13 21:53:32 【问题描述】:

php 菜鸟在这里。我正在构建一个将 JSON blob 发送到 Web 服务器的 iPhone 应用程序。在服务器端,我正在接收 JSON 并尝试访问对象包含的 3 个字段。

有两件奇怪的事情发生在我身上,我不知道如何解决:

    打印解码后的对象(下面的 $post_data)时,我没有得到任何返回。 我实际上可以在不解码的情况下打印对象时在 Xcode 中打印完整的对象(下面的 $content),但不知道如何访问对象中的各个字段。

我的 PHP 代码:

$con = mysql_connect("127.0.0.1","root", "") or die('Could not connect: ' . mysql_error());
$content = file_get_contents('php://input');
$post_data = json_decode($content , true);
echo $content; --> prints the object properly 
echo $post_data; --> does not print anything
echo $content->lat; --> does not print anything

我的 JSON 对象:


  "lat" : 37.33233141,
  "long" : -122.0312186,
  "speed" : 0

任何帮助将不胜感激。

【问题讨论】:

PHP json_decode return empty array 的可能重复项 【参考方案1】:

这是因为json_decode($content, true) 正在返回一个数组,如果您回显该容器,则会出现显示问题。

试试echo $post_data['lat'];

您也可以尝试使用print_r($post_data); 让它输出变量的实际内容,这样您就可以查看是否有某些东西无法正常工作

【讨论】:

哇,非常感谢!我几乎尝试了每一个选项,但这是有效的!你介意一个后续问题吗?如果我想将此参数存储在数据库中,我可以按原样使用 '$post_data['lat']' 吗?谢谢!! 肯定的。因为使用$post_data['lat'] 本质上将用它的内容替换变量。所以你可以做类似"UPDATE TABLE current_location SET lat = '".$post_data['lat']."', long = '".$post_data['long']."' WHERE current_user = '".$user_id."' LIMIT 1";

以上是关于在 PHP 中访问 JSON 元素的主要内容,如果未能解决你的问题,请参考以下文章

如何访问 PHP 中的 JSON 元素,如数组对象?

如何使用 PHP 从 JSON 中提取和访问数据?

在 PHP 中访问 JSON 数组并发送到 MySQL SELECT

如何在PHP中轻松访问JSON(比如具有多个字段的JSON记录集)

如何使用 node.js 访问 json 对象的子元素

访问从 iPhone 应用程序发送的 PHP 中的数组对象