Изменение формата json на php - PullRequest
       29

Изменение формата json на php

0 голосов
/ 06 августа 2020

У меня есть json результат запроса к базе данных, который выглядит следующим образом:

[
  {
    "name": 1,
    "value": "27.18161362"
  },
  {
    "name": 2,
    "value": "323.69645128"
  },
  {
    "name": 3,
    "value": "23.16249181"
  }
]

Я пытаюсь вставить это в сценарий, который будет создавать диаграммы из данных. Сценарий требует, чтобы данные были в следующем формате:

{"script":
  [
    {"name":"1","value":27.18161362},
    {"name":"2","value":323.69645128},
    {"name":"3","value":23.16249181}
  ]
}

Если они не отформатированы таким образом, сценарий утверждает, что они недействительны json и не содержат valud json head.

В выводе действительно используется допустимый заголовок json, но этого явно недостаточно для сценария, который я использую.

Итак, вопрос в том, как я могу преобразовать json вывод из вызова базы данных, показанный в первом примере, в формате, который сценарий ищет для отображения во втором примере.

Код, который создает json, довольно стандартный:

$stmt = $db3->prepare("SELECT week AS name, SUM(he.earnings) AS value FROM hotspot_earnings he INNER JOIN emrit_hotspots eh ON eh.hotspot_name = he.hotspot_name WHERE year = '2020' GROUP BY year, week");
$stmt->execute();
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);

header('Content-type: application/json; charset=UTF-8');
echo json_encode($row, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

Ответы [ 2 ]

2 голосов
/ 06 августа 2020
$stmt = $db3->prepare("SELECT week AS name, SUM(he.earnings) AS value FROM hotspot_earnings he INNER JOIN emrit_hotspots eh ON eh.hotspot_name = he.hotspot_name WHERE year = '2020' GROUP BY year, week");
$stmt->execute();
// Change here
$row = ['script' => $stmt->fetchAll(PDO::FETCH_ASSOC)];
0 голосов
/ 06 августа 2020

Не уверен, можно ли редактировать исходный результат json с помощью php. Если он вызывается AJAX и вы можете управлять файлом php, вы можете попробовать что-то вроде этого. Просто создайте новый массив.

$new_array = array('script' => $row);
echo json_encode($new_array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...