You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JQ或PHP转置JSON数据集并生成指定HTML表格?

JSON转指定HTML表格的实现方案

一、Linux CLI工具(JQ)实现

直接使用JQ命令即可完成转换,以下是完整命令及说明:

执行命令

jq -r '
. as $raw
| ($raw[] | .date) | unique | sort as $dates
| ($raw[] | .uid) | unique as $users
| "<table border=1>"
, "<tr>"
, " <td> NA"
, ($dates | map(" <td> \(.)") | join("\n"))
, "</tr>"
, ($users[] |
    . as $user
    | "<tr>"
    , "  <td> \( $user )"
    , ($dates[] |
        ($raw[] | select(.uid == $user and .date == .) | "\(.reg)/\(.ot)") // "-"
        | "  <td> \(.)"
    ) | join("\n")
    , "</tr>"
)
, "</table>"
' data.json

命令逻辑说明

  1. 将原始JSON数据存入$raw变量,方便后续重复引用
  2. 提取所有日期字段,去重后排序得到表头的日期列
  3. 提取所有用户ID,去重得到用户列表
  4. 生成表格头部:包含"NA"列和所有排序后的日期列
  5. 遍历每个用户,针对每个日期查找对应记录:
    • 找到记录则拼接reg/ot字符串
    • 无匹配记录则显示"-"
  6. 生成完整的HTML表格结构

二、PHP实现逻辑及代码

如果无法使用JQ,可通过PHP代码实现,以下是步骤及示例:

实现步骤

  1. 读取解析JSON:读取JSON文件内容,转换为PHP关联数组
  2. 提取基础数据:收集所有唯一日期并排序,收集所有唯一用户ID
  3. 构建映射关系:创建用户-日期的二维数组,存储每个用户各日期的reg/ot值
  4. 生成HTML表格:依次输出表头、每个用户的数据行,无数据的单元格填充"-"

示例代码

<?php
// 读取JSON文件(替换为你的文件路径)
$jsonData = file_get_contents('data.json');
$records = json_decode($jsonData, true);

// 提取并处理日期
$dates = array_unique(array_column($records, 'date'));
sort($dates);

// 提取用户ID
$users = array_unique(array_column($records, 'uid'));

// 构建用户-日期数据映射
$userData = [];
foreach ($records as $record) {
    $uid = $record['uid'];
    $date = $record['date'];
    $userData[$uid][$date] = "{$record['reg']}/{$record['ot']}";
}

// 输出HTML表格
echo "<table border=1>\n";
// 表头
echo "<tr>\n";
echo " <td> NA\n";
foreach ($dates as $date) {
    echo " <td> {$date}\n";
}
echo "</tr>\n";

// 用户数据行
foreach ($users as $user) {
    echo "<tr>\n";
    echo "  <td> {$user}\n";
    foreach ($dates as $date) {
        $content = isset($userData[$user][$date]) ? $userData[$user][$date] : '-';
        echo "  <td> {$content}\n";
    }
    echo "</tr>\n";
}

echo "</table>\n";
?>

内容的提问来源于stack exchange,提问作者AgentSmith0101

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:49:52