我有一个来自API的json响应,我不能用PHP中的"json_decode“从它创建一个数组来将它作为数组进行迭代。我总是得到"NULL",当我使用"var_dump“打印输出时,我的"json_decode”返回了什么。该接口响应的响应头是"application/ json ",但我不熟悉这个json格式。
来自API的json响应如下所示:
[1,"Example name","307","7","Test","455",1458572100000]
[1,"Another example name","146","7","Test","455",1458571500000]
[1,"Test","304","7","Test","455",1458572280000]
[1,"Example name 3","163","7","Hello world","455",1458571080000]
这是单个API请求的结果/响应。现在,例如,我想要获取每一行/对象的倒数第二个数字(在本例中为455),或者,例如,名称(第二个值:“example name”、"Another example name“、"Test”等)。我怎样才能用php和这个json格式做到这一点?如果我能从中得到一个可以迭代的数组,那就太好了。
它是一个本地实时总线到达应用程序接口,但它与content.tfl.gov.uk/…
相似,我在PHP中使用file_get_contents
通过一个简单的http/get请求来调用这个API
"/interfaces/ura/instant_V1?returnList=stopID,stopPointName,LineID,DestinationText,estimatedTime,vehicleID&vehicleID=455")
发布于 2016-03-21 22:57:44
需要澄清的是,您要返回的是而不是JSON格式。但是,如果这就是您所得到的,那么您需要一个解决方案:)
我将忽略第一个和最后一个字符,并使用str_getcsv()将逗号分隔的字符串作为数组返回:
$input = '[1,"Example name","307","7","Test","455",1458572100000]';
$array = str_getcsv(substr($input, 1, -1));
如果您有多行,那么在使用以下命令执行上述操作之前,您需要将它们拆分为单独的行:
$lines = explode($input, "]");
$array = array();
foreach($lines AS $line) {
$input = '[1,"Example name","307","7","Test","455",1458572100000]';
$array[] = str_getcsv(substr($input, 1, -1));
}
根据下面的评论,更新为显示]
的分隔符,而不是\n
。
https://stackoverflow.com/questions/36134126
复制相似问题