我有来自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,DestinationText,estimatedTime,vehicleID&vehicleID=455")
答案 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
的范围。