我正在尝试从API获取以下JSON响应中的某些信息。这是actual API cal l。
c3
我想获取naptanId,行标识符和作为名称值对并打印它们。例如,
请帮帮我,我是初学者, 提前谢谢
答案 0 :(得分:0)
根据您的问题,您似乎只对返回的第一个place
的值感兴趣,因此我会在答案中假设这一点。
将API中的数据转换为对象结构(与最初获得的JSON字符串相反):
$data = json_decode(file_get_contents('https://api.tfl.gov.uk/Place?lat=51.555504&lon=0.0592359&radius=200&includeChildren=False&type=NaptanPublicBusCoachTram&app_id=&app_key='), true);
获取naptanId
:
$naptanId = $data['places'][0]['naptanId'];
要获取lineIdentifier
,我假设的是第一个lineGroup
元素(不是lineModeGroups
,但您可以根据需要进行更改):
$lineIdentifier = $data['places'][0]['lineGroup'][0]['lineIdentifier'];
此值为数组。
要使towards
值更复杂,因为您需要根据子键过滤additionalProperties
数组,然后取出value
;再一次,我假设您只对第一个值感兴趣:
$towards = array_values(array_filter(
$data['places'][0]['additionalProperties'],
function ($property) {
return $property['key'] === 'Towards';
}
))[0]['value'];
对array_filter
的调用会将additionalProperties
元素拉出key === 'Towards'
(请注意,这假设区分大小写,您可以添加strtolower
并将字符串文字更改为{{ 1}}如果你想不区分大小写匹配)。调用'towards'
是规范化数组索引所必需的。然后我们拉出第一个元素array_values
并获取其[0]
属性。
请注意,上述代码不会执行任何错误检查,例如,如果API调用未返回任何value
,那么在您第一次执行places
时,它将失败。如果你需要处理这些情况(你几乎肯定会这样做),那么你需要预先检查这些事情,例如:
$data['places'][0]