解码json代码时出错

时间:2016-10-21 09:40:44

标签: javascript php json wordpress

我需要解码json

的帮助
if($loop->have_posts()) :
    $json = '{';
    $json .= '
    "api_status":1,
    "api_message":"success",
    "data": [';
    while ( $loop->have_posts() ) : $loop->the_post();
        $json .= '{
        "id":'.get_the_ID().',
        "post_name":"'.get_the_title().'"
        },
        ';
    endwhile;

    $json = substr($json,0,-1);
    $json .= ']}';

    echo $json;
endif;
break;
}

我的错误是

enter image description here

在上一个}我还有,所以我需要删除它。

但我不知道怎么办? 有人帮帮我吗?

3 个答案:

答案 0 :(得分:1)

正如评论中所提到的,json_encode是可行的方法。

$toEncode = array(
    "api_status" => 1,
    "api_message" => "success",
    "data" => array()
);

while ($loop->have_posts()) {
    $loop->the_post();
    array_push($toEncode["data"], array(
        "id" => get_the_ID(),
        "post_name" => get_the_title()
    ));
}

echo json_encode($toEncode);

但是,我不太明白你的帖子系统如何运作。你在使用某种类型的迭代器吗?

答案 1 :(得分:1)

你可以使用php函数json_decode / encode:

f.ex。

json_decode($variable, true);
json_encode($variable, true);

答案 2 :(得分:0)

使用rtrim($json, ",");删除json输出中的最后一个逗号

if($loop->have_posts()) :
    $json = '{';
    $json .= '
    "api_status":1,
    "api_message":"success",
    "data": [';
    while ( $loop->have_posts() ) : $loop->the_post();
        $json .= '{
        "id":'.get_the_ID().',
        "post_name":"'.get_the_title().'"
        },';
    endwhile;


    $json = rtrim($json, ",");
    $json .= ']}';

    echo $json;
endif;
break;
}

另一种方式

$json = new array();
if($loop->have_posts()) :
    $json["api_status"] = 1,
    $json["api_message"] = "success",
    $json["data"] = new array();
    while ( $loop->have_posts() ) : $loop->the_post();
        $json["data"]["id"] = get_the_ID();
        $json["data"]["post_name"] = get_the_title();
    endwhile;
    echo json_encode($json);
endif;
break;
}