PHP - 如何迭代这个json响应?

时间:2016-03-21 14:44:05

标签: javascript php arrays json

我有来自API的json响应,我无法使用PHP中的“json_decode”从中创建一个数组,以此作为数组进行迭代。我总是得到“NULL”,当我使用“var_dump”打印出来时,我的“json_decode”返回。这个API响应的响应头是“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),或者例如,名称(第二个值:“示例名称”,“另一个示例名称”,“测试”和等等)。我怎么能用php和这个json格式做到这一点?如果我能从这里得到一个数组来迭代,那就太好了。

这是一个本地实时总线到达API,但它与content.tfl.gov.uk/…类似/相同,我在PHP中使用file_get_contents使用简单的http / get请求调用此API

"/interfaces/ura/instant_V1?returnList=stopID,stopPointName,LineID,DestinationT‌​ext,estimatedTime,vehicleID&vehicleID=455")

1 个答案:

答案 0 :(得分:0)

澄清您正在回复的非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的范围。