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

如何在BigQuery中将键值表转换为指定格式的JSON?

将键值表转换为指定格式的JSON

我有如下结构的键值表:

rowkeyval
1a100
2b200
3c"apple
4d{}

我希望将其转换为如下格式的JSON:

{
    "a": 100,
    "b": 200,
    "c": "apple",
    "d": {}
}

注意:表的行数可能会变化,以上仅为示例。


解决方案

方法1:Python实现

先将表格数据转为可迭代的行数据,再处理每个值的格式并生成JSON:

import json

# 示例表格数据,实际场景可从文件/数据库读取
table_data = [
    (1, "a", "100"),
    (2, "b", "200"),
    (3, "c", "\"apple"),
    (4, "d", "{}")
]

result = {}
for _, key, val in table_data:
    # 补全不完整的字符串引号
    if val.startswith('"') and not val.endswith('"'):
        val = val + '"'
    # 尝试解析为JSON原生类型(数字、对象等)
    try:
        parsed_val = json.loads(val)
    except json.JSONDecodeError:
        parsed_val = val
    result[key] = parsed_val

# 格式化输出JSON
print(json.dumps(result, indent=4))

运行输出:

{
    "a": 100,
    "b": 200,
    "c": "apple",
    "d": {}
}

方法2:JavaScript前端实现

直接遍历页面表格DOM,提取数据并转换:

function tableToJson(table) {
    const result = {};
    const rows = table.querySelectorAll('tbody tr');
    
    rows.forEach(row => {
        const key = row.querySelector('td:nth-child(2)').textContent.trim();
        let val = row.querySelector('td:nth-child(3)').textContent.trim();
        
        // 补全不完整的字符串引号
        if (val.startsWith('"') && !val.endsWith('"')) {
            val += '"';
        }
        
        // 尝试解析为JSON原生类型
        try {
            val = JSON.parse(val);
        } catch (e) {
            // 解析失败则保留原字符串
        }
        
        result[key] = val;
    });
    
    return JSON.stringify(result, null, 4);
}

// 使用示例:针对页面中的.s-table表格
const table = document.querySelector('.s-table');
console.log(tableToJson(table));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:24:06