Нужна помощь с json в php

Xeon

Проверенные
Сообщения
143
Реакции
13
Баллы
8,115
На стороне php переводит в json так:
Безымянный2.png
Значение data берет из бд и выводит с "":
Безымянный.png
как можно их убрать? Нужно из-за того что другое значение берет в виде части json из бд:
Безымянный3.png
и поучается ..."group":"[{\"gr... а не ..."group":[{\"gr...
 
не понятно что вы именно хотите... вы привели функцию которая кодирует строку, а есть еще которая раскодирует ее json_decode
 
Если полностью пример:
{"uuid":"56eb6b18-9d6a-3a20-a97d-ec3fadf11a62""first_login":"1427993606","group":"[{\"group\":\"admin\",\"world\":\"world\"},{\"group\":\"admin\",\"world\":\"world_nether\"}]","balance":"6950"}
Из-за красных "" json получается неправильный...
А кусок jsona берется из бд как показал выше...
Вроде подробно написал...
 
ну так правильно в бд данные записаны с помощью json_encode, а получайте их через json_decode
 
ну так правильно в бд данные записаны с помощью json_encode, а получайте их через json_decode
те вы говорите, что мне нужно брвть строку из бд, уберать квадратные скобки, декодировать json, а потом снова собирать в json???
 
те вы говорите, что мне нужно брвть строку из бд, уберать квадратные скобки, декодировать json, а потом снова собирать в json???

моя логика ломается ....
зачем вам пересобирать массив ? ) у вас данные в бд в формате json_encode, в нужном месте перекодируете данные с json_decode и там уже работаете с ассоциативным массивом ) как то вы все усложняете...
 
моя логика ломается ....
зачем вам пересобирать массив ? ) у вас данные в бд в формате json_encode, в нужном месте перекодируете данные с json_decode и там уже работаете с ассоциативным массивом ) как то вы все усложняете...
Посмотрите на скрипт:
PHP:
header('Content-Type: application/x-javascript; charset=utf8');
include('/var/www/forum/library/config.php');

$name = isset($_GET['name']) ? $_GET['name'] : '';

if (!empty($name)) {
    mysql_connect($config['db']['host'], $config['db']['username'], $config['db']['password']);
    mysql_select_db($config['db']['dbname2']);
    mysql_query ('set character_set_results="utf8"');

    $sql = "SELECT `stats_players`.`uuid`, `stats_players`.`name`, `stats_players`.`online`, `stats_players`.`first_login`, `stats_players`.`logins`, `stats_players`.`login_time`, `stats_players`.`playtime`, `stats_players`.`longest_session`, `stats_hook_vault`.`group`, `stats_hook_vault`.`balance` FROM `stats_players` LEFT JOIN `stats_hook_vault` ON `stats_players`.`player_id` = `stats_hook_vault`.`player_id` WHERE `stats_players`.`name` = '{$name}'";
    $query = mysql_query($sql);
    $data = mysql_fetch_array($query);

    echo json_encode(array('status' => 'successful', 'uuid' => $data['uuid'], 'online' => $data['online'], 'first_login' => $data['first_login'], 'logins' => $data['logins'], 'login_time' => $data['login_time'], 'playtime' => $data['playtime'], 'longest_session' => $data['longest_session'], 'group' => $data['group'], 'balance' => $data['balance']));
}
else {
    echo json_encode(array('status' => 'error'));
}
 
проверить работу вашего скрипта у меня не получится, но на глаз как то так должно быть

PHP:
header('Content-Type: application/x-javascript; charset=utf8');
include('/var/www/forum/library/config.php');

$name = isset($_GET['name']) ? $_GET['name'] : '';

if (!empty($name)) {
    mysql_connect($config['db']['host'], $config['db']['username'], $config['db']['password']);
    mysql_select_db($config['db']['dbname2']);
    mysql_query ('set character_set_results="utf8"');

    $sql = "SELECT `stats_players`.`uuid`, `stats_players`.`name`, `stats_players`.`online`, `stats_players`.`first_login`, `stats_players`.`logins`, `stats_players`.`login_time`, `stats_players`.`playtime`, `stats_players`.`longest_session`, `stats_hook_vault`.`group`, `stats_hook_vault`.`balance` FROM `stats_players` LEFT JOIN `stats_hook_vault` ON `stats_players`.`player_id` = `stats_hook_vault`.`player_id` WHERE `stats_players`.`name` = '{$name}'";
    $query = mysql_query($sql);
    $data = mysql_fetch_array($query);

   // echo json_encode(array('status' => 'successful', 'uuid' => $data['uuid'], 'online' => $data['online'], 'first_login' => $data['first_login'], 'logins' => $data['logins'], 'login_time' => $data['login_time'], 'playtime' => $data['playtime'], 'longest_session' => $data['longest_session'], 'group' => $data['group'], 'balance' => $data['balance']));


$jsonData = json_encode(array('status' => 'successful', 'uuid' => $data['uuid'], 'online' => $data['online'], 'first_login' => $data['first_login'], 'logins' => $data['logins'], 'login_time' => $data['login_time'], 'playtime' => $data['playtime'], 'longest_session' => $data['longest_session'], 'group' => $data['group'], 'balance' => $data['balance']));

// если у нас данные получены в json уже, то мы их конвертируем и работаем с ними как с массивом 
 echo (json_decode($jsonData));

}
else {
    echo json_encode(array('status' => 'error'));
}

не могу понять что вы хотите делать с данными после получения с бд
 
Просто вывести....
 
А это что? {"id":15}
 
Ладо, забудем про ""в численных значениях...
Как убрать их в част там где вставляется кусок json из бд...
Если вы до сих пор не поняли, что я хочу, вот колхозный способ :
PHP:
      echo "{'status' : 'successful', 'uuid' : '".$data['uuid']."', 'group' : ".$data['group'].", 'balance' : ".$data['balance']."}";
^
 
Xeon, ну способ не колхозный, а нормальный. У вас есть еще два варианта - кавычки экранировать или просто переменные в {} заключить.
 
Современный облачный хостинг провайдер | Aéza
Назад
Сверху Снизу