2013-07-04 72 views
0

我正在写一个简单的PHP脚本,使得返回JSON的API调用。但是,我很难弄清楚如何获取该JSON字符串,将其转换为字典,并访问其中的嵌套字典/数据。PHP:从JSON字符串访问字典

这是我到目前为止有:

<?php 
$id = $_REQUEST['id']; 

$url = http://exampleURLThatReturnsJSONString.com 
$rawData = file_get_contents($url); 

我读过你应该使用类似$decodedData = json_decode($rawData) ,但我不知道下一步该怎么做,特别是如果我要访问的嵌套字典与一个关键像Schedule

任何帮助将不胜感激,谢谢!

+0

我们不知道你需要做什么'下一个' – 2013-07-04 21:19:02

+0

php没有“字典”。它有数组。一旦你通过json_decode运行你的json字符串,你最终会得到一个数组或一个对象。此时,您可以像访问任何OTHER php数组/对象一样访问数据。 –

+0

''json_decode''会解码你的原始数据,正如你所建议的那样。之后会发生什么取决于您的数据结构(您没有显示)和应用程序(您没有描述过)。正如Dagon所说:“我们不知道你需要做什么'接下来' – 2013-07-04 21:24:24

回答

1

你可以只访问解码后的数据是这样的:

echo $decodedData['key']; 

这与西港岛线键“key”回响在字典中的项的值。嵌套值可以这样访问:

echo $decodedData['key1']['key2']['...']; 

您可以随时使用var_dump显示什么结果内。另外,请阅读documentation on json_decode了解更多信息。

+0

感谢您的评论。我只是试过:'$ data = json_decode($ rawData); echo $ data ['LinearScheduleResult'] ['Schedule'] ['Airings'];'但我得到这个错误:'致命错误:不能使用stdClass类型的对象作为数组。有任何想法吗? –

+0

两种方法:使用json_decode($ data,true)(第二个参数将所有对象转换为数组)或使用$ data-> LinearScheduleResult-> Schedule-> Airings; –

+0

太好了,谢谢! –

3

json_decode($json, $assoc = false)默认情况下,JSON字符串转换为对象,或者到一个数组,如果你指定$assoc = true

如果你有$assoc = false那么你必须通过$decoded_data->key访问值。而如果你有$assoc = true那么你可以做$decoded_data['key']