2016-10-21 3 views
0

мне нужна помощь с декодированием 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 = substr($json,0,-1); 
    $json .= ']}'; 

    echo $json; 
endif; 
break; 
} 

моя ошибка

enter image description here

в последнем } у меня есть еще ,, поэтому мне нужно, чтобы удалить Это.

но я не знаю как? Кто-нибудь мне помогает?

+0

Почему вы не используете встроенную функцию 'json_encode()'? –

+0

как? дайте мне образец, спасибо ^^ –

+0

'echo json_encode ($ whateveryouwtotoencode);' –

ответ

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; 
} 
+0

Я бы не рекомендовал этот метод, так как построение строки JSON из базы - плохая идея. Есть много возможностей для того, чтобы все пошло не так. –

+0

Это правда, я рекомендую строить 'new array()', а затем использовать 'json_encode' –

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

Вы можете использовать PHP функция json_decode/закодировать:

f.ex.

json_decode($variable, true); 
json_encode($variable, true); 
Смежные вопросы