我有一个简单的脚本是这样的。
<?php
$uri = file_get_contents('http://lewatmana.com/peta/pois/');
$json = json_decode($uri, true);
for($i=0; $i < count($json); $i++) {
$response['url'][$i] = $json[$i]['name'];
echo json_encode($response);
}
?>
我认为这个脚本会像我想的那样工作,但我错了,这个脚本会产生错误的JSON输出,这个JSON输出无法解码。
输出
{"url":["Alternatif Cibubur"]}{"url":["Alternatif Cibubur","Ancol - Bandara"]}{"url":["Alternatif Cibubur","Ancol - Bandara","Ancol - Tj.Priok"]}..........................
我尝试将此JSON输出解码为JSON Decode Online,但响应为无效的JSON格式!无法处理您的请求。 有什么建议这个脚本错误吗? 谢谢
答案 0 :(得分:1)
json_encode将始终生成有效的json字符串。您的代码存在问题。你基本上是回应多个json字符串。你应该在循环完成后回显一次。例如:
tid
答案 1 :(得分:1)
仅仅是为了我自己的娱乐,并且本着的精神,如果我不打扰可读性,我可以制作这段代码 ......
$uri = file_get_contents('http://lewatmana.com/peta/pois/');
echo json_encode(['url' => array_column(json_decode($uri, true), 'name')]);
答案 2 :(得分:0)
这是因为你在循环中做回声。更改您的代码如下
<?php
$uri = file_get_contents('http://lewatmana.com/peta/pois/');
$json = json_decode($uri, true);
for($i=0; $i < count($json); $i++) {
$response['url'][$i] = $json[$i]['name'];
}
echo json_encode($response);
?>