更改php中的json格式

我有一个来自数据库查询的 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 并且不包含有价值的 json 头。


输出确实使用了有效的 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);


海绵宝宝撒
浏览 57回答 2
2回答

忽然笑

$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)];

手掌心

不确定是否可以使用 php 编辑初始 json 输出。如果它是由 AJAX 调用并且您可以控制 php 文件,您可以尝试这样的操作。只需构建新数组即可。$new_array = array('script' => $row);echo json_encode($new_array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
打开App,查看更多内容
随时随地看视频慕课网APP