如何解析PHP中的JSON对象?

问题描述:

我有一个JSON对象,我发送到一个PHP脚本,我无法解析JSON。下面是POST请求:如何解析PHP中的JSON对象?

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字符串中提取的名为“迈克”。有什么建议么?

+0

请在$ OBJ一个的var_dump。 – Daniel

+1

您的查询字符串错误..没有'data ='。 – Esailija

+0

你说得对。这应该是什么呢? – kaleazy

重复的问题,尝试采取看看什么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} 
+0

不错! ...... – hek2mgl

+0

啊,你说得对!但即使在URL中设置了数据,为什么这不起作用? $ data = $ _GET ['data']; $ obj = json_decode($ data); – kaleazy

+0

您需要使用'$ data = urldecode($ _ GET ['data']);' – maiorano84

你应该做的

echo $obj->{'Name'}; 

这也就是Echo data json by json_decode

+1

没有'{}'调用它有什么区别? – hek2mgl

+0

是不是使用$ _GET ['data']? – kaleazy

+0

'$ obj-> Name'和'$ obj - > {'Name'}'在这种情况下是等价的;这个答案是无用的。 – Amber