如何在BigQuery中将键值表转换为指定格式的JSON?
将键值表转换为指定格式的JSON
我有如下结构的键值表:
| row | key | val |
|---|---|---|
| 1 | a | 100 |
| 2 | b | 200 |
| 3 | c | "apple |
| 4 | d | {} |
我希望将其转换为如下格式的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
相关产品推荐
相关产品推荐

