mysql — формат базы данных php json для GoJs

Я хочу отформатировать json в этом формате для js библиотека! GoJs ожидают JSON в этом формате:

model.nodeDataArray =
[
{ key: "1",              username: "Don Meow",   source: "cat1.png" },
{ key: "2", parent: "1", username: "Demeter",    source: "cat2.png" },
{ key: "3", parent: "1", username: "Copricat",   source: "cat3.png" },
{ key: "4", parent: "3", username: "Jellylorum", source: "cat4.png" },
{ key: "5", parent: "3", username: "Alonzo",     source: "cat5.png" },
{ key: "6", parent: "2", username: "Munkustrap", source: "cat6.png" }
];

В PHP я пытаюсь вернуть JSON, как указано выше, но я действительно плохо знаком с JSON, и мой пример не работает!

$users = $db->query("SELECT * FROM user");
$data = array();

while ($result = $users->fetch_assoc())
{
$data['key'] = $result['id'];
$data['username'] = $result['username'];
$data['email'] = $result['email'];
$data['parent'] = $result['parent'];

array_push($data, $result);
}

echo json_encode($data);

Мой JSON выглядит так:

{ «Ключ»: «7», «имя пользователя»: «Vlada», «родитель»: «4», «0»: { «ID»: «1», «родитель»: нулевой, «имя пользователя»: «Иван », «электронная почта»: «[email protected]», «пароль»: «qwe123»}, «1»: { «ID»: «2», «родитель»: «1», «Имя пользователя»: «Мартину», «электронная почта»: «[email protected]», «пароль»: «qwe123»}, «2»: { «ID»: «3», «родитель»: «1», «Имя пользователя»: «Биляна», «электронная почта»: «asd.com», «пароль»: «qwe123»}, «3»: { «ID»: «4», «родитель»: «2», «Имя пользователя»: «Эмиль », «электронная почта»: «[email protected]», «пароль»: NULL}, «4»: { «ID»: «5», «родитель»: «2», «Имя пользователя»: «Елена», «электронная почта»: «[email protected]», «пароль»: NULL}, «5»: { «ID»: «6», «родитель»: «4», «имя пользователя»: «электронная почта «боле» «: нулевой,» пароль «: NULL},» 6 «: {» ID «:» 7″ , «родитель»: «4», «имя пользователя»: «Vlada», «электронная почта»: нулевой, «пароль»: ноль}}

Я пытаюсь заменить id с key потому что GoJs нужно key свойство определено. Мой JSON настолько отличается, и мне нужно отформатировать вывод, как указано выше, JSON?

Что я здесь не так делаю?

0

Решение

Вам просто нужно изменить способ хранения в массиве

$users = $db->query("SELECT * FROM user");
$data = array();

while ($result = $users->fetch_assoc())
{
$row = array (
"key" => $result['id'],
"username" => $result['username'],
"email" => $result['email'],
"parent" => $result['parent'],
);

array_push($data, $row);
}

echo json_encode($data);
2

Другие решения

Вы делаете некоторые странные вещи здесь

Попробуйте упростить это до

$users = $db->query("SELECT * FROM user");
$data = array();
while ($row = $users->fetch_assoc())
{
$t = array();
$t['key']       = $row ['id'];
$t['username']  = $row ['username'];
$t['email']     = $row ['email'];
$t['parent']    = $row ['parent'];

$data[] = $t;
}

Или, что еще проще, укажите нужные столбцы в запросе, что в любом случае ускорит его, а затем ваш массив будет готов.

$users = $db->query("SELECT id,username,email,parent FROM user");
$data = array();
while ($row = $users->fetch_assoc())
{
$data[] = $row;
}
2

По вопросам рекламы [email protected]