【问题标题】:How do I parse a JSON object in PHP?如何在 PHP 中解析 JSON 对象?
【发布时间】:2013-04-06 08:11:13
【问题描述】:

我有一个 JSON 对象,我将其发送到 PHP 脚本,但在解析 JSON 时遇到了问题。这是 POST 请求:

http://mywebsite.com?action=somefunction&{%22id%22:1,%22Name%22:%22Mike%22}

这是我的 PHP 函数,它显然不起作用:

$data = $_GET['data'];
$obj = json_decode($data);
echo $obj->Name;
die();

最终目标是从 URL 字符串中提取名称“Mike”。有什么建议吗?

【问题讨论】:

  • 在 $obj 上做一个 var_dump。
  • 您的查询字符串错误.. 没有data=
  • 你是对的。这应该是什么?
  • @kaleazy 查看我的回答。

标签: php json parsing post


【解决方案1】:

尝试查看 PHP 从 json_decode() 输出的内容:

$data = $_GET['data'];
$obj = json_decode($data);
var_dump($obj);

您的代码本身运行良好:http://ideone.com/0jsjgT

但是您的查询字符串在实际 JSON 之前缺少 data=。这个:

http://mywebsite.com?action=somefunction&{%22id%22:1,%22Name%22:%22Mike%22}

应该是这样的:

http://mywebsite.com?action=somefunction&data={%22id%22:1,%22Name%22:%22Mike%22}

【讨论】:

  • 啊,你是对的!但即使在 URL 中设置了数据,为什么这不起作用? $data = $_GET['data']; $obj = json_decode($data);
  • 感谢各位的帮助。原来我需要 stripslashes($data),然后它起作用了!
【解决方案2】:

你应该这样做

echo $obj->{'Name'};

这也是Echo data json by json_decode的重复问题

【讨论】:

  • 不使用{} 调用它有什么区别??
  • $obj->Name$obj->{'Name'} 在这种情况下是等价的;这个答案没用。
  • @hek2mgl 没有(在这种情况下):P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-19
  • 2011-07-30
  • 2015-05-18
相关资源
最近更新 更多