PHP上的json_encode错误

时间:2018-03-31 06:53:22

标签: php json

我有一个简单的脚本是这样的。

<?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格式!无法处理您的请求。 有什么建议这个脚本错误吗? 谢谢

3 个答案:

答案 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);
?>